파이썬의 자료형(3) - 리스트, 튜플, 딕셔너리
리스트
먼저 리스트에 대해 간단히 설명하면 여러 값이 모인 큰 자료형이다.
리스트의 들어있는 것을 요소라고 하고 리스트의 생김새는 대괄호([ ])로 감싸고 요솟값은 콤마(,)로 구분다.
여러 리스트의 생김새는 다음과 같다.
>>> a = []
>>> b = [1, 2, 3]
>>> c = ['Life', 'is', 'too', 'short']
>>> d = [1, 2, 'Life', 'is']
>>> e = [1, 2, ['Life', 'is']]
비어있는 리스트는 a = list() 로 생성할 수 있다.
리스트는 어떤 자료형도 포함할 수 있다.
인덱싱과 슬라이싱
리스트도 문자열처럼 인덱싱, 슬라이싱이 가능하다.
>>> a = [1, 2, 3, ['a', 'b', 'c']]
위와 같은 형태의 리스트는 a[3]을 하게되면 a,b,c를 담고 있는 리스트 전체가 출력된다.
>>> print(a[3])
['a', 'b', 'c']
리스트 안에 있는 리스트를 인덱싱하려면 a[3][0]과 같은 형태를 사용한다.
리스트 연산
리스트는 +를 사용해 더하거나 *를 사용해 반복할 수 있다.
>>> a = [1, 2, 3]
>>> b = [4, 5, 6]
>>> a + b
[1, 2, 3, 4, 5, 6]
>>> a = [1, 2, 3]
>>> a * 3
[1, 2, 3, 1, 2, 3, 1, 2, 3]
len 함수로 길이도 구할 수 있다.
>>> a = [1, 2, 3]
>>> len(a)
3
리스트 수정 삭제
>>> a = [1, 2, 3]
>>> a[2] = 4
>>> a
[1, 2, 4]
인덱싱과 같은 형태로 수정이 가능하다.
>>> a = [1, 2, 3]
>>> del a[1]
>>> a
[1, 3]
del 함수를 사용하면 요소를 삭제할 수 있다. 슬라이싱 기법을 활용하면 여러 개를 삭제할 수 있다.
리스트 함수
요소 추가 - append
리스트의 뒷 부분에 요소를 추가한다.
>>> a = [1, 2, 3]
>>> a.append(4)
>>> a
[1, 2, 3, 4]
정렬 - sort
>>> a = [1, 4, 3, 2]
>>> a.sort()
>>> a
[1, 2, 3, 4]
뒤집기 - reverse
현재 리스트 그대로 거꾸로 순서를 뒤집는다.
>>> a = ['a', 'c', 'b']
>>> a.reverse()
>>> a
['b', 'c', 'a']
인덱스 반환 - index
>>> a = [1, 2, 3]
>>> a.index(3)
2
>>> a.index(1)
0
삽입 - insert
insert(a,b)는 리스트의 a번째 위치에 b를 삽입한다. 0부터 사용한다.
>>> a = [1, 2, 3]
>>> a.insert(0, 4)
>>> a
[4, 1, 2, 3]
제거 - remove
>>> a = [1, 2, 3, 1, 2, 3]
>>> a.remove(3)
>>> a
[1, 2, 1, 2, 3]
끄집어내기 - pop
값을 끄집어내고 그 값을 리스트에서 삭제한다.
>>> a = [1, 2, 3]
>>> a.pop()
3
>>> a
[1, 2]
요소 x의 개수 - count
>>> a = [1, 2, 3, 1]
>>> a.count(1)
2
확장 - extend
>>> a = [1, 2, 3]
>>> a.extend([4, 5])
>>> a
[1, 2, 3, 4, 5]
>>> b = [6, 7]
>>> a.extend(b)
>>> a
[1, 2, 3, 4, 5, 6, 7]
튜플
튜플은 리스트와 비교하면 비슷한 부분이 있지만 소괄호로 쌓여있고, 값의 변경이 불가능하다.
t1 = ()
t2 = (1,)
t3 = (1, 2, 3)
t4 = 1, 2, 3
t5 = ('a', 'b', ('ab', 'cd'))
튜플을 만들 때 요소가 하나라면 (1,)와 같이 쉼표를 넣어야 한다.
이외에는 리스트와 동일하다.
딕셔너리
딕셔너리는 단어 그대로 '사전'이라는 뜻이다.
딕셔너리는 key와 value 형태로 이루어져 있다. 생김새는 중괄호로 둘러쌓여 있고, key: value로 이루어져 있다.
다음은 딕셔너리의 예이다.
>>> dic = {'name': 'pey', 'phone': '010-9999-1234', 'birth': '1118'}
해당 dic의 key는 각각 'name', 'phone', 'birth', 각각의 key에 해당하는 value는 'pey', '010-9999-1234','1118'이다.
key | value |
name | pey |
phone | 010-9999-1234 |
birth | 1118 |
그림을 보면 알겠지만 key에 대응하는 값을 이용하는 자료형이다.
다음은 key로 정숫값 1, value로 문자열 'hi'를 사용한 예이다.
>>> a = {1: 'hi'}
또한 다음 예처럼 Value에 리스트도 넣을 수 있다.
>>> a = {'a': [1, 2, 3]}
딕셔너리 쌍 추가, 삭제
>>> a = {1: 'a'}
>>> a[2] = 'b'
>>> a
{1: 'a', 2: 'b'}
이런식으로 넣으면 a 딕셔너리에 2 라는 key에 'b'라는 value를 추가하여 들어간다.
value에는 어떤 자료던 들어간다.
>>> del a[1]
>>> a
{2: 'b', 'name': 'pey', 3: [1, 2, 3]}
del a[key]를 입력하면 지정한 key에 해당하는 {key : value} 쌍이 삭제된다.
딕셔너리 사용
딕셔너리에서 Key를 사용해 Value 얻을 수 있다.
>>> grade = {'pey': 10, 'julliet': 99}
>>> grade['pey']
10
>>> grade['julliet']
99
딕셔너리에서 key는 고유한 값이므로 중복되는 값을 설정하면 나머지 것들이 모두 무시된다.
key는 불변값(immutable)만 들어갈 수 있다.
딕셔너리 함수
Key 리스트 - keys
>>> a = {'name': 'pey', 'phone': '010-9999-1234', 'birth': '1118'}
>>> a.keys()
dict_keys(['name', 'phone', 'birth'])
Value 리스트 - values
dict_values 객체를 리턴
>>> a.values()
dict_values(['pey', '010-9999-1234', '1118'])
Key, Value 쌍 얻기 - items
쌍을 튜플로 묶는 dict_items 객체를 리턴
>>> a.items()
dict_items([('name', 'pey'), ('phone', '010-9999-1234'), ('birth', '1118')])
Key: Value 쌍 모두 지우기 - clear
>>> a.clear()
>>> a
{}
Key로 Value 얻기 - get
>>> a = {'name': 'pey', 'phone': '010-9999-1234', 'birth': '1118'}
>>> a.get('name')
'pey'
>>> a.get('phone')
'010-9999-1234'
해당 Key가 딕셔너리 안에 있는지 조사하기 - in
>>> a = {'name':'pey', 'phone':'010-9999-1234', 'birth': '1118'}
>>> 'name' in a
True
>>> 'email' in a
False