출처 : 윤성우의 열혈 파이썬 : 중급
18. 자료형 분류와 set & frozenset
- 시퀀스 타입(sequence type)
- list, tuple, range, string
- 저장된 값의 순서 정보가(위치 정보가) 존재
- 인덱싱 연산 : s[0], s[1] ...
- 슬라이싱 연산 : s[0:3], s[5:9]
- 매핑 타입(mapping type)
- set, frozenset
- 저장된 값의 순서 또는 위치 정보를 기록하지 않는 자료형
- 수학의 '집합'을 표현한 자료형
- '수학의 집합은 저장 순서를 유지하지 않는다'
- '수학의 집합은 중복된 값의 저장을 허용하지 않는다'
set, frozenset
A = {'a', 'c', 'd', 'f'}
B = {'a', 'b', 'd', 'e'}
A - B # A에 대한 B의 차집합
A & B # A와 B의 교집합
A | B # A와 B의 합집합
A ^ B # A와 B의 대칭 차집합
A = set(['a', 'c', 'd', 'f'])
B = set('fdca')
A == B
'a' in A
'b' not in A
for c in A & B:
print(c, end = ' ')
empty set 생성
d = {}
type(d) # dict
s = set()
type(s) # set
- 위의 모든 내용은 frozenset을 대상으로도 동일하게 적용
set 변경 가능, frozenset 변경 불가
os = {1, 2, 3, 4, 5}
os.add(6)
os.discard(1)
os.update({7, 8, 9})
os &= {2, 4, 6, 8}
os -= {2, 4}
os ^= {1, 3, 6}
- set : mutable 객체
- frozenset : immutable 객체
- 기존에 존재하던 객체의 값을 수정하는 연산(또는 메소드 호출)은 set을 대상으로만 할 수 있다
set comprehension
s1 = {x for x in range(1, 11)}
s2 = {x**2 for x in s1}
s3 = {x for x in s2 if x < 50}
'프로그래머 > Python' 카테고리의 다른 글
[윤성우의 열혈 파이썬 중급편] 20. enumerate와 문자열 비교 (0) | 2020.12.24 |
---|---|
[윤성우의 열혈 파이썬 중급편] 19. 정렬 기술 (0) | 2020.12.24 |
[윤성우의 열혈 파이썬 중급편] 17. dict & OrderedDict (0) | 2020.12.24 |
[윤성우의 열혈 파이썬 중급편] 16. dict & defaultdict (0) | 2020.12.24 |
[윤성우의 열혈 파이썬 중급편] 15. 함수 호출과 매개변수 선언에 있어서 *와 **의 사용 규칙 (0) | 2020.12.24 |