리스트 자료형
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는 내장 함수라고 볼 수 있다.
'Tech > Python' 카테고리의 다른 글
[python] 자료형 - 튜플 자료형 (0) | 2020.09.24 |
---|---|
[python] 자료형 - 문자열 자료형 (0) | 2020.09.24 |
[python] concept 9 - 기본 입출력 (0) | 2020.07.23 |
[python] concept 8 - 연산자와 수식 (0) | 2020.07.23 |
[python] concept 7 - 16진수, 숫자 연산 (0) | 2020.07.21 |