리스트
- 리스트는 데이터의 목록을 다루는 자료형
- 단일 데이터가 명함이라면, 리스트는 명함을 모아두는 명함집
- 슬롯(Slot) : 리스트의 데이터를 삽입할 자리
- 요소(Element) : 리스트의 각 슬롯에 꽂혀있는 개별 데이터
- 배열(Array)과 비슷한 개녕
- 차이점 : 서로 다른 데이터형도 요소가 될 수 있다는 점
- 리터럴 - int, float, complex, bool, byte, str
- 저장 - list, tuple, dict, set
- 동일한 값들이라도 다른 주소(별도로 만들어 짐)
a = ['박지성', '손흥민', '차범근']
a[0]
'박지성'
a[1]
'손흥민'
a[2]
'차범근'
a = [1,2,3,4,5,6,7,8,9,10]
a[0:5]
[1, 2, 3, 4, 5]
a[5:]
[6, 7, 8, 9, 10]
a[:3]
[1, 2, 3]
a = [1,2,3,4,]
b = [5,6,7,]
a+b
[1, 2, 3, 4, 5, 6, 7]
a = [1,2,3]
a.append([4,5,6])
a
[1,2,3,[4,5,6]]
a = [1,2,3]
a.extend()
a
[1,2,3,4,5,6]
a = [2,4,5]
a.insert(0,1)
a
[1,2,4,5]
a=['a','b','c','d']
a.remove('a')
a
['b', 'c', 'd']
a = [1,2,3,4,5]
a.pop()
5
a
[1, 2, 3, 4]
a.pop()
4
a
[1, 2, 3]
a.pop(2)
3
a
[1, 2]
a = ['a','b','c']
a.index('a')
0
a.index('b')
1
a = [1,100,2,100,3,100]
a.count(100)
3
a.count(1)
1
a = [3,4,5,2,1]
a.sort()
a
[1, 2, 3, 4, 5]
a.sort(reverse = True)
a
[5, 4, 3, 2, 1]
a = ['요', '세', '하', '녕', '안']
a.reverse()
a
['안', '녕', '하', '세', '요']
a = [1,2,3]
b = a.copy()
c = list(a)
d = a[:]
a[0] = 'surprise'
a = [1,2,3]
b = [4,5,6]
c = [a,b,100]
d = c.deepcopy()
튜플
- 리스트는 “목록”, 튜플은 “N개의 요소로 된 집합”
- 리스트는 데잍 변경 가능, 튜플은 데이터 변경 불가능
- 튜플은 위경도 좌표나 RGB 색상처럼 작은 규모의 자료구조를 구성하기에 적합
- 성능
- 데이터를 할당할 공간의 내용이나 크기가 달라지지 않기 때문에 생성 과정이 간단
- 데이터가 오염되지 않을 것이라는 보장이 있기 때문에 원본 사용
- 신뢰 가능한 코드
- 변경되지 않아야 할 데이터를 오염시키는 버그를 만들 가능성 제거
- 코드를 설계할 때부터 변경이 가능한 데이터와 그렇지 않은 데이터를 정리해서 코드에 반영
a = (1,2,3)
a[0]
1
a[0] = 7
Traceback (most recent call last):
File "<pyshell#35>", line 1, in <module>
a[0] = 7
TypeError: 'tuple' object does not support item assignment
a = 1,2,3
a
(1, 2, 3)
one, two, three = a
one
1
two
2
three
3
MU, TOT, NUM = 'PARK', 'SON' , 7
MU
'PARK'
TOT
'SON'
NUM
7
p = 'abc'
q = 'defg'
p, q = q, p
p
'defg'
q
'abc'
a = (1,2,3,4,5)
b, *c, d = a
print(a)
(1, 2, 3, 4, 5)
print(b,c,d)
1 [2, 3, 4] 5
딕셔너리
- 리스트처럼 첨자를 이용해서 요소에 접근
- 리스트는 0부터 시작하는 수 첨자만 사용할 수 있지만 딕셔너리는 문자열과 숫자를 비록해서 변경이 불가능한 형식이면 어떤 자료형이든 키로 사용 가능
- 딕셔너리의 첨자는 키 - 반드시 유일
- 이 키가 가르키는 슬롯에 저장되는 데이터를 일컬어 값(Value)
- 딕셔너리는 키-값의 쌍으로 구성
- 탐색속도가 빠르고, 편리
- {} 이용
- 새로운 키-값을 입력하거나 딕셔너리 안에 있는 요소를 참조할 때는 []를 이용
dic = {}
dic['파이썬'] = 'Python'
dic['애플'] = 'Apple'
dic['파이썬']
'Python'
dic['애플']
'Apple'
dic
{'파이썬': 'Python', '애플': 'Apple'}
dic.keys()
dict_keys(['파이썬', '애플'])
dic.values()
dict_values(['Python', 'Apple'])
dic.items()
dict_items([('파이썬', 'Python'), ('애플', 'Apple')])
'애플' in dic.keys()
True
'잡스' in dic.keys()
False
'Python' in dic.values()
True
'Java' in dic.values()
False
dic.pop('애플')
'Apple'
dic
{'파이썬': 'Python'}
dic.clear()
dic
{}
셋
- 값은 버리고 키만 남은 딕셔너리 (존재 여부 판단에 사용)
중요 사항
L = ['abc',[(1,2),([3],4)],5]
L[1]
[(1, 2), ([3], 4)]
L[1][1]
([3], 4)
L[1][1][0]
[3]
L[1][1][0][0]
3
a = [1,2,3]
b = a
a[0] = 'surprise'
a
['surprise', 2, 3]
b
['surprise', 2, 3]