반응형
Notice
Recent Posts
Recent Comments
Link
JUST DO IT PROJECT
[문법] Python 자료형: 리스트 List 본문
반응형
파이썬의 기본 자료형은 앞서 살펴본 것 처럼 다음과 같습니다.
- 숫자형 Numeric: 정수, 실수 (e.g. 1, 3.4)
- 문자열 String: 문자들의 모음 (e.g. "hello")
- 불린 Boolean: 참/거짓 (e.g. true, false)
- 리스트 List: 순서를 가지는 집합, 값을 변경할 수 있음 (e.g. ["hello","world"])
- 튜플 Tuple: 순서를 가지는 집합. 값을 변경할 수 없움. (e.g. ("hello","world"))
- 세트 Set: 순서를 가지지 않는 집합. 키가 없음. 중복되는 값 허용 안됨.(e.g. {"hello","world"}, {1,2,3,4}, {1,2,2,3}=={1,2,3})
- 딕셔너리 Dictionary: 순서를 가지지 않는 집합. 키(key)로 값을 꺼냄.(e.g. {"hello":3,"world":4}, 'hello'는 키, 3은 값)
이 중 리스트와 그 메소드(함수)들에 대해 알아보려고 합니다.
리스트 List
리스트는 파이썬에서 자주 사용되는 자료형으로 순서가 있고, 여러 값을 담아 나열하는 자료형입니다.
리스트 만드는 법
리스트는 대괄호(squared bracket)안에 모든 원소(elements, items)를 넣고, 쉼표(comma)로 각 원소를 구분해서 만들 수 있습니다. 원소의 자료형은 무엇이든 될 수 있습니다. 다른 자료형도 한 리스트 안에 넣을 수 있습니다. 심지어 리스트 자체도 리스트의 원소가 될 수 있죠. 이를 중첩리스트(nested list)라고 부릅니다.
# 빈 리스트
>>> my_list=[]
# 정수 리스트
>>> my_list=[0, 1, 2]
# 다양한 자료형을 포함하는 리스트
>>> my_list=[0, 1.2, 'A', "Hello World", [1, 2]]
리스트 인덱스 List Index
리스트의 각각의 원소에 접근하기 위해서 인덱스를 사용합니다. 인덱스는 정수이고 0부터 시작합니다.
만약 인덱스의 값이 범위를 벗어난다면 IndexError라는 에러가 발생합니다.
>>> a=['p','y','t','h','o','n']
>>> a[0]
'p'
>>> a[6]
IndexError!
중첩리스트는 중첩인덱스를 사용해 접근합니다.
# 중첩 리스트 Nested List
>>> b=[[1,2],[3,4]]
>>> b[0][1]
2
인덱스에 음의 정수를 넣으면 뒤에서부터 셀 수 있습니다.
-1은 마지막 원소를 의미하며, -2는 뒤에서부터 두번째 원소, -n은 뒤에서부터 n번째 원소를 의미합니다.
>>> a=['p','y','t','h','o','n']
>>> a[-1]
'n'
문자열과 마찬가지로 리스트 또한 슬라이싱(slicing)을 통해 원하는 특정 범위의 원소들을 가져올 수 있습니다.
>>> a=['p','y','t','h','o','n']
>>> a[1:3]
['y', 't']
>>> a[3:]
['h', 'o', 'n']
>>> a[:]
['p', 'y', 't', 'h', 'o', 'n']
>>> a[-1:]
['n']
>>> a[:-2]
['p', 'y', 't', 'h']
리스트는 가변형(mutable) 데이터로 값을 바꿀 수 있습니다.
>>> a=['p','y','t','h','o','n']
>>> a[0]='A'
>>> print(a)
['A', 'y', 't', 'h', 'o', 'n']
>>> a[1:3]=['B','C']
>>> print(a)
['A', 'B', 'C', 'h', 'o', 'n']
리스트 메소드 List Method list
다음과 같은 메소드로 데이터를 조작할 수 있습니다.
- append(): 원소 추가.
- extend(): 원소 여러개 추가.
- insert(): 원하는 위치에 원소 추가.
- remove(): 원소 값을 인자로 입력해 헤당 원소 삭제. 리턴값 없음.
- pop(): 원소 인덱스를 인자로 입력해 해당 원소 삭제. 해당 원소 값 리턴. 인자가 없으면 가장 마지막 원소가 삭제됨. 스택(stack) 구현에 유용.
- clear(): 리스트를 비울 때 사용.
- index(): 원소 값을 입력하면 앞에서부터 찾아 그 인덱스를 알려줌.
- count(): 원소 개수를 알려줌.
- sort(): 리스트를 오름차순으로 정렬해줌.
- reverse(): 리스트 원소 값들의 순서를 거꾸로 바꾸어줌.
- copy(): 리스트의 얕은 복사.
리스트 원소 추가 예제
- append(): 원소 추가.
- extend(): 원소 여러개 추가.
- insert(): 원하는 위치에 원소 추가.
- 빈 슬라이스(empty slice)에 리스트 끼워넣기.
>>> a=['p','y','t','h','o','n'] >>> a.append(' ') >>> a ['p', 'y', 't', 'h', 'o', 'n', ' '] >>> a.extend(['g','o','o','d']) >>> a ['p', 'y', 't', 'h', 'o', 'n', ' ', 'g', 'o', 'o', 'd'] >>> a.insert(7,'i') >>> a ['p', 'y', 't', 'h', 'o', 'n', ' ', 'i', 'g', 'o', 'o', 'd'] >>> a[8:8]=['s',' '] >>> a ['p', 'y', 't', 'h', 'o', 'n', ' ', 'i', 's', ' ', 'g', 'o', 'o', 'd']
리스트 원소 삭제 예제
- del: 리스트의 원소나 리스트 자체를 삭제할 수 있는 키워드
- remove(): 원소 값을 인자로 입력해 헤당 원소 삭제. 리턴값 없음.
- pop(): 원소 인덱스를 인자로 입력해 해당 원소 삭제. 해당 원소 값 리턴. 인자가 없으면 가장 마지막 원소가 삭제됨. 스택(stack) 구현에 유용.
- clear(): 리스트를 비울 때 사용.
- 빈 리스트 (empty list)나 빈 슬라이스를 대입하여 원소를 삭제하기.
>>> a=['p', 'y', 't', 'h', 'o', 'n', ' ', 'i', 's', ' ', 'g', 'o', 'o', 'd'] >>> a.remove('o') >>> a ['p', 'y', 't', 'h', 'n', ' ', 'i', 's', ' ', 'g', 'o', 'o', 'd'] >>> a.pop(4) 'n' >>> a ['p', 'y', 't', 'h', ' ', 'i', 's', ' ', 'g', 'o', 'o', 'd'] >>> a.pop() 'd' >>> a[1:4]=[] >>> a ['p', ' ', 'i', 's', ' ', 'g', 'o', 'o'] >>> a.clear() >>> a []
반응형
'CSE > Python' 카테고리의 다른 글
[문법] Python 변수와 문자열 활용, 이스케이프 문자, 인덱싱, 슬라이싱 (0) | 2020.03.16 |
---|---|
[VSCode] Macbook에서 python 개발환경 구축하기 (3) | 2020.03.12 |