민수야, 너도 할 수 있어
Python 공부 (4) - 자료형(리스트) 본문
자료형 - 리스트(List)
리스트는 다양한 요소들의 모음이다. 리스트가 가질 수 있는 요소로는 숫자, 문자열 그리고 리스트 자체가 있다.(나중에 배울 자료형들도 리스트에 넣을 수 있다.) 리스트의 생성 방법은 아래와 같이 대괄호로 각 요소들을 감싸주고, 각 요소들을 쉼표로 구분해 주면된다.
a = [] # 비어있는 리스트도 생성가능
b = [1,2,3]
c = [1,2,'hello']
d = [1,2,[3,4]] # 리스트 자체를 요소로 가질 수 있다.
리스트의 인덱싱과 슬라이싱
리스트도 문자열과 마찬가지로 인덱싱과 슬라이싱을 사용할 수 있다.
- 리스트의 인덱싱
문자열의 인덱싱과 마찬가지로 리스트 이름[번호] 처럼 사용하면 된다.
a = [1,2,3]
print(a[0]) #1
print(a[-1])#3
위 예제에서 a[0]
은 리스트 a의 첫 번째 요소값을, a[-1]
은 마지막 요소값을 반환한다.
- 이중 리스트의 인덱싱
a = [1,2,[3,4,5]]
print(a[2][1]) #4
print(a[-1][2]) #5
- 리스트의 슬라이싱
문자열의 슬라이싱과 마찬가지로 리스트 이름[시작번호 : 끝번호] 처럼 사용하면 된다. 여기서도 끝번호에 해당하는 요소값은 반환하는 범위에 포함되지 않는다.
a = [1,2,3,4]
b = a[0:2]
print(b) #[1,2]
리스트 연산자
리스트도 문자열과 마찬가지로 +
와 *
기호를 사용할 수 있다.
- 리스트 연결하기 (+)
a = [1,2,3]
b = [4,5]
c = a + b
print(c) #[1,2,3,4,5]
- 리스트 반복하기 (*)
a = [1,2,3]
b = a * 2
print(b) #[1,2,3,1,2,3]
리스트의 수정, 변경과 삭제
- 리스트의 요소값 수정하기
a = [1,2,3]
a[2] = 4
print(a) #[1,2,4]
마지막 요소값이 3에서 4로 변경되었다.
- 리스트에서 연속된 범위의 값 수정하기
a = [1,2,3]
a[1:2] = ['a','b']
print(a) #[1,'a','b',3]
여기서 주의할 점은 a[1:2] = ['a','b']
와 a[1] = ['a','b']
로 수정된 리스트는 서로 전혀 다르게 된다.
a = [1,2,3]
a[1] = ['a','b']
print(a) #[1,['a','b'],3]
위의 예제들을 통해서, 리스트의 슬라이싱은 모두 '리스트' 단위로 진행된다는 것을 알 수 있다. 그러므로, 하나의 요소만을 수정할 때에는 '인덱싱'을, 범위의 값을 수정할 때에는 '슬라이싱'을 통해 수정해야 한다.
- 리스트 요소 삭제하기
- [] 사용
a = [1,2,3]
a[1:2] = []
print(a) #[1,3]
여기서도 주의할 점은, 리스트의 범위로 연산해야하기 때문에 슬라이싱을 이용해야한다는 것이다. 만약, a[1] = []
를 했다면, a를 출력했을 때, [1,[],3]
이 출력된다.
- del 함수 사용
a = [1,2,3]
del a[1]
print(a) #[1,3]
b = [4,5,6]
del b[1:3]
print(b) #[1]
del 리스트 이름[x]는 리스트의 x+1 번째 요소값을 삭제하고 del 리스트 이름[x:y]는 리스트의 x+1 번째 요소부터 y번째 요소 까지의 값을 삭제한다.
리스트 관련 함수들
- 리스트의 마지막에 요소 덧붙이기 (append)
a = [1,2,3]
a.append(4)
print(a) #[1,2,3,4]
리스트 이름.append(x) 는 리스트의 맨 뒤에 x 요소값을 추가시킨다. x에는 리스트의 요소가 될 수 있는 모든 자료형이 올 수 있다.
- 리스트 정렬 (sort)
a = [3,6,2,1,4]
a.sort()
print(a) #[1,2,3,4,6]
리스트 이름.sort() 는 리스트를 오름차순으로 정렬한다. sort함수를 통해 숫자뿐만아니라 알파벳 요소들도 정렬이 가능하다.
- 리스트 뒤집기 (reverse)
a = [1,2,3]
a.reverse()
print(a) #[3,2,1]
리스트 이름.reverse() 는 리스트를 역순으로 뒤집는다. 다만! 역순으로 '정렬'해주는 것이 아니라 뒤집는 것 뿐이다.
- 특정요소 위치 반환 (index)
a = [1,2,3]
b = a.index(2)
print(b) #1
리스트 이름.index(x) 는 리스트 내의 x요소값의 위치를 반환한다. 여기서, 리스트 내에 x 요소값이 존재하지 않으면 ValueError 가 발생한다.
- 특정요소를 삽입 (insert)
a = [1,2,3]
a.insert(1,4)
print(a) #[1,4,2,3]
리스트 이름.insert(x,y) 는 리스트의 x+1 번째 위치에 y 요소값을 삽입한다.
- 특정요소를 제거 (remove)
a = [1,2,3,1]
a.remove(1)
print(a) #[2,3,1]
리스트 이름.remove(x) 는 리스트 내의 가장 앞에있는 x 요소값을 하나를 제거한다.
- 리스트의 마지막 요소 끄집어내기 (pop)
a = [1,2,3]
b = a.pop()
print(a) #[1,2]
print(b) #3
리스트 이름.pop()는 리스트의 맨 마지막 요소를 반환하고 삭제한다.
리스트 이름.pop(x)는 리스트의 x+1 번째 요소를 반환하고 삭제한다.
- 리스트 내의 특정요소 개수 세기 (count)
a = [1,2,3]
b = a.count(2)
print(b) #1
리스트 이름.count(x) 는 리스트 내의 x 요소값의 개수를 반환한다.
- 리스트 확장 (extend)
a = [1,2,3]
b = [2,4,6]
a.extend(b)
print(a) #[1,2,3,2,4,6]
리스트 이름.extend(x)는 리스트 x를 기존의 리스트에 연결한다. 리스트의 +
더하기 연산과 동일한 기능을 한다.
이번 글에서는 python의 자료형 중, 리스트 자료형에 대해 공부해봤다. 다음에는 튜플 자료형에 대해 공부 해볼 것이다. 참고로, 저자는 공부자료로 박응용 저자의 점프 투 파이썬 책을 이용하고 있다. 이는 구글에서도 무료로 볼 수 있으니 공부에 참고하길 바란다.
'언어 > python' 카테고리의 다른 글
Python 공부 (6) - 자료형(딕셔너리) (0) | 2020.02.01 |
---|---|
Python 공부 (5) - 자료형(튜플) (0) | 2020.01.30 |
Python 공부 (3) - 자료형(문자열) (0) | 2020.01.19 |
Python 공부 (2) - 자료형(숫자형) (0) | 2020.01.13 |
Python 공부 (1) - python 개발환경 구축 (python, pycharm 설치) (0) | 2020.01.02 |