[python] list, tuple, dictionary, set

Jay·2020년 2월 8일
0
post-custom-banner

처음 이 개념들을 접했을 때 개념들간의 혼동이 와서 차이점에 중점을 두고 정리하고자 한다

list

aList = []  # 리스트 선언 방법(1)
aList = list()   # 리스트 선언 방법(2)
aList = [1, 7, 8, 9, 10]   #리스트에 값을 넣어 선언
aList = list(range(1,10,2))
> [1, 3, 5, 7, 9]

tuple

bList = ()
bList = tuple()
bList = 2, 6, 8, 98, 100  #3
bList = (2, 6, 8, 98, 100)  #4

튜플은 소괄호를 사용하고, 세번째 식과 네번째 식은 같다. 둘 다 파이썬에서 튜플로 인식한다. 리스트와 달리 튜플은 요소 추가, 삭제, 수정이 불가능하다. (수정이 불가능하기 때문에 튜플은 리스트보다 차지하는 용량이 더 작다) 그래서 튜플은 2~5개의 요소를 저장하는데 주로 사용된다. 리스트의 요소로서 자주 사용되기도 한다. 요소를 읽는 방법은 리스트처럼 bList[index] 이렇게 읽는다.

aList = tuple(aList)

위 방식처럼 리스트를 튜플로, 튜플을 리스트로 변환하는것이 가능하다

리스트와 튜플 언패킹

x = [1, 2, 3]
a, b, c = x
print(a, b, c)
> 1 2 3
x = (1, 2, 3)
a, b, c = x
print(a, b, c)
> 1 2 3

리스트와 튜플의 값을 한번에 복수의 변수에 할당할 수 있다.

a, b = x
> ValueError: too many values to unpack (expected 2)
a, b, c, d = x
> ValueError: not enough values to unpack (expected 4, got 3)

만약 튜플 내 요소의 갯수와 할당하고자 하는 변수의 갯수가 다르면 위와 같은 오류가 뜬다.

dictionary

딕셔너리는 키와 값이 한 쌍을 이루고 있어, 곧 쌍들의 배열로 구성되어 있다. 순서(index)는 없다.
딕셔너리의 다양한 선언 방법

politician = {}  #빈 딕셔너리(1)
politician = dict() #빈 딕셔너리(2)
politician = dict(name='payton', age=19, friend='river')
politician = {'name':'payton', 'age':19, 'friend':'river'}
politician = dict(zip(['name', 'age', 'friend'],['payton', 19, 'river']))
> {'name': 'payton', 'age': 19, 'friend': 'river'}

키와 값을 리스트 형식으로 각각 구성한 다음 zip으로 묶는 방식이 인상적이다.
튜플과 리스트가 서로의 요소가 될 수 있고, 리스트가 리스트의 요소, 튜플이 튜플의 요소가 될 수 있는 것과는 달리 딕셔너리의 요소로 튜플과 리스트 형식은 들어갈 수 없다. key값은 중복되지 않으며, 존재하고 있는 key의 value를 설정하면 마지막에 설정한 값으로 바뀐다.

set

중괄호{}로 표현하는 자료형이다. 리스트와 튜플과의 차이점은 값의 index가 정해져 있지 않다는 점이다. 그래서 in 연산자로 특정 값이 있는지는 확인할 수 있지만, set[]같은 방식으로 확인할 수는 없다. 또한 중복 값을 허용하지 않는다. 그래서 중복 값이 여러개 있다면 하나만 출력된다는 점이 세트의 가장 큰 특징이다. 세트는 집합과 유사한데 그래서 합집합(union), 차집합(difference), 교집합(intersection) 기능이 있다.

garden = {'bench', 'cat','bird', 'tree'}
'cat' in garden
> True
'dog' in garden
> False

빈set를 만들 때 주의할 점은 aSet = set() 같은 방식으로만 된다는 것이다. aSet = {} 는 aSet라는 이름의 딕셔너리를 생성한다는 뜻이다. set() 괄호 안에는 이터레이터만 넣을 수 있다. 그러면 알아서 중복되는 값은 삭제하고, 유일한 값만 세트에 들어가게 된다.

bSet = set('lloll')
print(bSet)
> {'l', 'o'}

세트 안에 딕셔너리, 리스트는 들어갈 수 없다. 세트도 일반 세트는 들어갈 수 없지만, frozenset는 가능하다. fozenset는 요소를 추가, 삭제할 수 없는 세트다.

elsa = {frozenset({'anna', 'dear', 'treeboy'})}
profile
You're not a computer, you're a tiny stone in a beautiful mosaic
post-custom-banner

0개의 댓글