본문 바로가기

Python

02_리스트

02_리스트


- 리스트는 데이터를 순차적으로 파악하는 데 유용하다. 특히 내용의 순서를 자유롭게 바꾸거나, 삽입, 삭제에 특화되어 있다.

- 리스트는 0 혹은 그 이상의 요소로 만들어진다.

1
2
3
empty_list = []
 
day_list = ['Monday''Tuesday''Wednesday''Thursday''Friday']
cs


- 리스트 함수를 통해 빈 리스트를 할당 할 수 있다.

1
function_empty_list = list()

cs


- 리스트의 인덱스는 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
= [123]        #a 리스트 선언 및 값 할당
print('a : ', a)
 
= 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
= [123]
print('a : ', a)
 
= a.copy()        #copy함수를 통해 복사
print('b : ', b)
 
= list(a)            #list함수를 통해 복사
print('c : ', c)
 
= 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