goodthings4me.tistory.com
# 파이썬의 시퀀스 타입(sequence type)은 list, tuple, string, range
# set(), frozenset()는 집합 관련 자료형으로 셋 타입이라 하며, iterable 객체이고,
# set()은 저장된 값의 순서정보가 없고 중복된 값을 허용(저장)도 않는다.
print(set('anaconda'))
# {'o', 'a', 'n', 'c', 'd'}
# set() 정의는,
s = {}
print(type(s)) # <class 'dict'> dict 정의임
s1 = {1,}
print(type(s1)) # <class 'set'> set 정의됨
s2 = set()
print(type(s2)) # <class 'set'>
# 중괄호 내 값의 형태에 따라 type이 결정됨
#sd1 = set(1, 2, 3) # 정의 불가
# TypeError: set expected at most 1 argument, got 3
sd2 = {1, 2, 3} # 정의 가능
# frozenset()
fs1 = frozenset(['a', 'b', 'c', 'd'])
fs2 = frozenset(['d', 'f', 'e', 'a'])
fs3 = fs1 & fs2 # 교집합 연산
print(fs3) # frozenset({'a', 'd'})
s3 = set(['a', 'b', 'c', 'd'])
s4 = set(['d', 'f', 'e', 'a'])
print(s3 & s4) # {'a', 'd'}
# set()과 frozenset()의 차이 : set()은 값의 변경(추가, 삭제 등) 가능하나 frozenset은 변경 불가(immutable 객체)
# set의 관련 연산자들은 frozenset에 적용 불가함
st = {1, 2, 3, 4, 5, 6}
print(type(st))
st.add(9)
st.discard(1)
print(st) # {2, 3, 4, 5, 6, 9}
fst = frozenset((1, 2, 3, 4, 5, 6))
#fst.add(9)
# AttributeError: 'frozenset' object has no attribute 'add'
# set 컴프리헨션
sc1 = {s for s in range(1, 6)}
print(sc1) # {1, 2, 3, 4, 5}
sc2 = {s**2 for s in sc1}
print(sc2) # {1, 4, 9, 16, 25}
sc3 = {s for s in sc2 if s % 2}
print(sc3) # {1, 9, 25}
[참고자료] 윤성우의 열혈파이썬 중급편
'코딩 연습 > 코딩배우기' 카테고리의 다른 글
[python] 파이썬 enumerate와 문자열 비교 (0) | 2020.09.08 |
---|---|
[python] 파이썬 시간 관련 함수, time() datetime() timezone() (0) | 2020.09.08 |
[python] 파이썬 내장함수 zip()에 대해 (0) | 2020.09.03 |
[python] Django 3.1 Tree (0) | 2020.08.31 |
[python] 딕셔너리(dict) 알아보기 - 생성, 루핑, 컴프리헨션, setfault, orderedDict (0) | 2020.08.29 |
댓글