1. 정의
데이터를 연속적으로 담아 처리하기 위해 사용하는 자료형.
2. 특징
1) C나 자바에서 배열뿐 아니라 연결 리스트의 기능 지원한다. C++ vector 기능과 유사.
2) 리스트는 대괄호([]) 안에 원소를 넣어 초기화 해, 쉼표로 원소를 구분한다.
3) 리스트의 원소 접근 시, 인덱스 값을 괄호에 넣는다.
4) 인덱스는 0부터 시작.
5) 비어 있는 리스트를 선언하고자 할 때는 list() 혹은 []를 이용.
ex) a=[1,2,3,4,5,6,7,8]
print(a) => [1,2,3,4,5,6,7,8]
3. 인덱싱
리스트의 특정 원소에 접근하는 것을 인덱싱이라고 한다. 만약 인덱스가 -면은 맨 뒤에서부터 접근한다.
ex) a=[1,2,3,4,5,6,7,8] a[-1]=8
4. 슬라이싱
리스트에서 연속적인 위치를 갖는 원소들을 가져와야 할 때 슬라이싱을 이용한다. 대괄호 안에 클론(:)을 넣어서 시작 인덱스와 끝 인덱스를 설정할 수 있다.
ex) a=[3,5,4,3,2]
a[1:5] => [5,4,3,2] #원소 2번째부터 5번째까지.
5. 초기화
대괄호 안에 조건문과 반복문 적용해 리스트 초기화.
ex1) 0~9까지의 수를 포함하는 리스트
array=[i for i in range(10)]
->[0,1,2,3,4,5,6,7,8,9]
ex2) 0부터 19까지의 수 중에서 홀수만 포함하는 리스트
array=[i for i in range(20) if i%2 ==1]
->[1,3,5,7,9,11,13,15,17,19]
ex3) 1부터 9까지의 수들의 제곱 값을 포함하는 리스트
array=[i*i for i in range(1,10)]
6. 컴프리헨션
2차원 리스트를 초기화할 때 효과적으로 사용될 수 있다. N X M 크기 2차원 리스트를 한 번에 초기화 할 때 매우 유용.
ex) array = [[0] * m for_ in range(n)]
그러나, array=[[0]*m]*n은 예기치 않은 결과가 나올 수 있다. 리스트 안에 포함된 리스트가 모두 같은 객체로 인식된다.
1) 좋은 예시
n = 4
m = 3
array[[0]*m for_in range(n)]
2) 잘못된 예시
n = 4
m = 3
array = [[0] * m ] * n
array[1][1] = 5를 했을 때, 결과 값이 아래와 같은 사진이 나온다.
1개를 고칠려 했지만, 4개의 리스트가 전부 다 초기화. 의도치 못한 결과가 나온다.
※ 참고
array[[0]*m for_in range(n)]에서 _를 쓰는 이유: i 대신 _을 쓰면 간단하게 출력(반복)만 한다. 내부적으로 변수가 사용되지 않을 때는 보통 _를 쓴다.(i를 써도 상관없긴 하다.)
7. 기타 메서드
위 사진에 언급되지 않은 sorted의 경우 복제된 값을 반환한다. 즉, 내부 값이 바뀌지 않는다. 정리하면 sort는 메서드로 보면 되고, sorted는 내장함수라 보면 된다.
아래 사진은 예시.
8. 특정 값 원소 모두 제거.
remove_set 사용.
ex)
a= [1,2,3,4,5,5,5]
remove_set = {3,5}
result = [i for i in a if i not in remove_set]
print(result) => [1,2,4]
'파이썬' 카테고리의 다른 글
파이썬 자료형(3) - 문자열&튜플&사전&집합 (0) | 2021.04.14 |
---|---|
파이썬 자료형(1) (0) | 2021.04.14 |