02_리스트
- 리스트는 데이터를 순차적으로 파악하는 데 유용하다. 특히 내용의 순서를 자유롭게 바꾸거나, 삽입, 삭제에 특화되어 있다.
- 리스트는 0 혹은 그 이상의 요소로 만들어진다.
1 2 3 | empty_list = [] day_list = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday'] | cs |
- 리스트 함수를 통해 빈 리스트를 할당 할 수 있다.
1 | function_empty_list = list() |
- 리스트의 인덱스는 0부터 시작이며, 인덱스를 통해 값을 얻게 될 때, 인덱스를 잘 체크해야 한다.
- 없는 인덱스에 접근하거나, 인덱스가 리스트의 갯수와 같거나 클 경우는 전부 "list index out of range"의 예외가 발생하게 된다.( 보통 인덱스의 마지막은 내가 넣은 요소의 갯수 - 1이 되게 된다. 인덱스가 0부터 시작하므로 )
< 슬라이스로 항목 추출 >
- 슬라이스(:)를 사용해서 리스트의 값을 추출할 수 있다.
1 2 3 4 5 | number_list = ['one', 'two', 'three'] result_list1 = number_list[0:2] #0~1까지 인덱스 리스트 항목 추출 result_list2 = number_list[::2] #왼쪽(앞)에서부터 2칸씩 리스트 항목 추출 | cs |
< 리스트의 끝에 항목 추가 : append >
- append를 통해 리스트의 끝에 항목 추가
1 | number_list.append('four') #기존 three까지만 있던 리스트에 four 추가 | cs |
< 리스트의 원하는 곳에 항목 추가 : insert >
- append는 단지 끝에서만 추가 가능하지만, insert를 사용하면 어디든 값을 추가할 수 있다.
- 인덱스가 리스트의 끝을 넘으면 append 처럼 끝에 항목을 추가하게 된다.
1 | number_list.insert(0, 'zero') #원하는 0의 자리에 zero 추가 | cs |
< 리스트의 인덱스로 항목 삭제 : del >
- 원하는 인덱스를 통해 항목을 삭제 할 수 있다.
1 | del number_list[0] #인덱스 0 위치에 있는 zero 제거 | cs |
< 리스트의 값으로 항목 삭제 : remove >
- 리스트에서 삭제할 항목의 인덱스를 모를 경우, remove()와 값으로 항목을 삭제할 수 있다.
1 | number_list.remove('four') # 리스트 항목 중에 four를 삭제 | cs |
< 리스트의 인덱스로 항목을 얻은 후 삭제 : pop >
- pop()은 리스트에서 항목을 가져오는 동시에 그 항목을 삭제한다.
- 인자가 없다면 -1을 사용, pop(0)은 리스트의 머리를 반환, pop(-1)는 리스트의 끝을 반환한다.
1 | number_list.pop() # 맨 끝의 항목을 지우게 된다.(인자가 없으면 -1이기 때문) | cs |
< 값으로 인덱스 찾기 : index >
1 2 3 | number_list = ['one', 'two', 'three'] number_list.index('two') #two가 위치한 인덱스 찾기 | cs |
< 값이 존재하는지 확인 : in >
- True가 나오면 존재하고, False가 나오면 존재하지 않는다.
1 | 'three' in number_list | cs |
< 리스트의 값의 갯수 세기 : count >
- 리스트에 특정 값이 얼마나 있는지 세기 위해 사용
1 | number_list.count('one') #one 값을 가지는 항목의 갯수 얻기 | cs |
< 정렬하기 : sort >
- 인덱스를 이용하여 리스트를 정렬할 때도 있지만, 값을 이용하여 리스트를 정렬할 때도 있다.
- sort()는 리스트 자체를 내부적으로 정렬
- sorted()는 리스트의 정렬된 복사본을 반환
- 리스트의 항목이 숫자인 경우, 기본적으로 오름차순 정렬이고, 문자열인 경우, 알파벳순으로 정렬된다.
1 | sorted_number_list = sorted(number_list) #문자열이기 때문에 알파벳순으로 정렬 | cs |
< 리스트의 항목 갯수 얻기 : len >
- 리스트의 항목들의 갯수를 반환
1 | len(number_list) # 리스트의 항목 갯수 얻기 | cs |
< 리스트 할당 및 복사 >
- 한 리스트를 변수 두 곳에 할당했을 경우, 한 리스트에서 값이 변경되면 다른 리스트도 따라서 변경된다.
1 2 3 4 5 6 7 8 9 | a = [1, 2, 3] #a 리스트 선언 및 값 할당 print('a : ', a) b = a #b는 a를 참조 print('b : ', b) a[0] = 0 #a의 0인덱스의 값 변경 print('a : ', a) #a의 값이 변경 확인 print('b : ', b) #b도 같이 변경됨... | cs |
- 여기서 b도 변경된 이유는, b는 단지 같은 리스트 객체인 a를 참조하고 있기 때문데 변경된 값이 모두 적용된 것이다.
- 이럴때 한 곳에서 변경된 값을 다른 한곳에는 적용되지 않게 하기 위해 리스트 복사를 사용한다.
- copy(), list(), 슬라이스(:) 를 통하여 복사할 수 있다.
1 2 3 4 5 6 7 8 9 10 11 12 | a = [1, 2, 3] print('a : ', a) b = a.copy() #copy함수를 통해 복사 print('b : ', b) c = list(a) #list함수를 통해 복사 print('c : ', c) d = a[:] #슬라이스(:)를 통해 복사 print('d : ', d) | cs |
- b, c, d는 a의 복사본이다. 이들은 자신만의 값을 가진 새로운 객체가 되는 것이다. 따라서 원본 객체인 a가 변하더라도 b, c, d에는 아무런 영향을 주지 않는다.
1 2 3 4 5 6 | a[0] = 0 #원본인 a를 변경 print('a : ', a) print('b : ', b) print('c : ', c) print('d : ', d) | cs |
'Python' 카테고리의 다른 글
05_셋 (0) | 2018.01.28 |
---|---|
04_딕셔너리 (0) | 2018.01.20 |
03_튜플 (0) | 2017.12.30 |
01_파이 재료 : 숫자, 문자열, 변수 (0) | 2017.12.10 |
00_Python 시작하기(설치) (0) | 2017.11.15 |