Tech/Python

[python] 자료형 - 리스트 자료형

lonnie(동현) 2020. 9. 9. 18:15

리스트 자료형

 

1. 정의 : 여러 개의 데이터를 연속적으로 담아 처리하기 위해 사용하는 자료형이다.

  •  사용자 입장에서 C나 자바에서의 배열(array)의 기능뿐 아니라 연결 리스트의 기능을 지원한다.

  •  C++STL vector와 기능적으로 유사하다.

  •  리스트 대신에 배열 혹은 테이블이라고 부르기도 한다.

 

2. 특징

  • 리스트는 대괄호([])안에 원소를 넣어 초기화하며, 쉼표(,)로 원소를 구분한다. (변수에 값을 할당해서 초기화한다는  말이다)

  •  리스트의 원소에 접근할 때는 인덱스(index) 값을 괄호에 넣는다. (인덱스는 0부터 시작한다)

  •  비어 있는 리스트를 선언하고자 할 때는 list() 혹은 간단히 []를 이용할 수 있다.

 

3. 리스트의 인덱싱 :

 

인덱스 값을 입력하여 리스트의 특정한 원소에 접근하는 것을 인덱싱(Indexing)이라고 한다.

  •  Python의 인덱스 값은 양의 정수(0부터)와 음의 정수(-1부터) 모두 사용할 수 있다.

  •  음의 정수를 넣으면 원소를 거꾸로 탐색하게 된다.

 

4. 리스트의 슬라이싱 :

 

리스트에서 연속적인 위치를 갖는 원소들을 가져오야 할 때는 슬라이싱(Slicing)을 이용한다.

  •  대괄호 안에 콜론(:)을 넣어서 시작 인덱스끝 인덱스를 설정할 수 있다.

  •  끝 인덱스는 실제 인덱스보다 1을 더 크게 설정한다.

 

5. 리스트 컴프리헨션 :

 

리스트를 초기화하는 방법 중 하나이다.

  •  대괄호 안에 조건문과 반복문을 적용하여 리스트를 초기화 할 수 있다.

 

ex) array = [i for i in range(20) if i % 2  == 1 ]

# 0부터 19까지의 수 중에서 홀수만 포함하는 리스트

 

ex) array = [i * i for i in range(1,10)]

# 1부터 9까지의 수들의 제곱 값을 포함하는 리스트

 

  •  리스트 컴프리헨션은 2차원 리스트를 초기화할 때 효과적으로 사용될 수 있다.(특히 N x M 크기의 2차원 리스트를 한번에 초기화 해야할 때 매우 유용하다)

좋은 예시 :

array = [[0] * m for _ in range(n)]  ( _ 를 쓰면 무시하겠다는 뜻 = 내부적으로 변수를 쓰지 않겠다)

  • 만약 2차원 리스트를 초기화할 때 다음과 같이 작성하면 예기치 않은 결과가 나올 수 있다.

잘못된 예시 :

array = [[0] * m]*n (리스트 안에 포함된 리스트가 모두 같은 객체로 인식된다)

 

 

6. 자주 사용되는 함수들

함수명

사용법

설명

시간 복잡도

append()

변수명.append()

리스트에 원소를 하나 삽입

O(1)

sort()

변수명.sort()

오름차순으로 정렬

O(NlogN ))

변수명.sort(reverse = True)

내림차순으로 정렬

reverse()

변수명

리스트의 순서를 반대로

O(N)

insert()

insert(삽입할 위치 인덱스, 삽입할 값)

특정 인덱스 위치에 원소 삽입

O(N)

count()

변수명.count(특정 값)

리스트에서 특정 값을 가지는 데이터 개수를

셀 때 사용

O(N)

remove()

변수명.remove(특정 값)

특정 값을 갖는 원소를 제거하는데, 값을 가진 원소가 여러 개면 하나만 제거

O(N)

  • sort와 sorted의 차이

ex) a = {1, 11, 3, 7, 5}                              b = {1, 11, 3, 7, 5}

     a.sort()                                            result = sorted(b)

    

     print(a)                                            print(b)

                                                          print(result)

     출력 결과 : {1, 3, 5, 7, 11}                    출력 결과 : {1, 11, 3, 7, 5}

                                                                         {1, 3, 5, 7, 11}

 

sort는 내부적으로 class 이기 때문에 내부 method를 가질 수 있다. 따라서, 내부적으로 변수안에서 정렬을 수행한다.

sorted는 복제된 값을 정렬해서 result에 반환하는 것으로 내부적으로 b 자체가 변하지 않는다.

 

여기서, sort는 메서드, sorted는 내장 함수라고 볼 수 있다.

 

728x90
반응형