ko ko ko en en en ko ko cs zh ko ko ko ko ko ko ko ko ko ko ko ko ko en ko ko ko ko ms ko en ko ko ko en ko ko ko en ko ko ko ja ko ko ko ko en ko en ko ja en ko ko ko ko ko en ko ko ko en ko en ko en ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko fr ko ko ko ko fr ko ko ko en en ko en zh en en
◀ 25.8 심사문제: 딕셔너리에서 특정 값 삭제하기26.2 집합 연산 사용하기 ▶︎
파이썬은 집합을 표현하는 세트(set)라는 자료형을 제공합니다. 집합을 영어로 하면 세트인데 수학에서 배우는 그 집합이 맞습니다. 따라서 세트는 합집합, 교집합, 차집합 등의 연산이 가능합니다.
이번 유닛에서는 세트를 만드는 방법과 세트 메서드 사용 방법을 알아보겠습니다.
세트는 { }(중괄호) 안에 값을 저장하며 각 값은 ,(콤마)로 구분해줍니다.
세트 = {값1, 값2, 값3}
간단하게 과일이 들어있는 세트를 만들어보겠습니다.
SyntaxError: invalid syntax: { }의 짝이 맞지 않을 때, 문자열의 ' ' 짝이 맞지 않을 때, 각 요소를 구분할 때 ,를 넣지 않아서 발생하는 구문 에러입니다. { }, ' ' 짝이 맞는지, ,를 빠뜨리지 않았는지 확인해주세요.
세트는 요소의 순서가 정해져 있지 않습니다(unordered). 따라서 세트를 출력해보면 매번 요소의 순서가 다르게 나옵니다.
또한, 세트에 들어가는 요소는 중복될 수 없습니다. 다음과 같이 세트에 'orange'를 두 개 넣어도 실제로는 한 개만 들어갑니다.
특히 세트는 리스트, 튜플, 딕셔너리와는 달리 [ ](대괄호)로 특정 요소만 출력할 수는 없습니다.
26.1.1  세트에 특정 값이 있는지 확인하기
그럼 세트에 특정 값이 있는지 확인하려며 어떻게 해야 할까요? 지금까지 리스트, 튜플, 딕셔너리에 사용했던 in 연산자를 사용하면 됩니다.
이처럼 세트에 특정 값이 있으면 True, 없으면 False가 나옵니다. 세트 fruits에 'orange'가 있으므로 True, 'peach'가 없으므로 False가 나왔습니다.
반대로 in 앞에 not을 붙이면 특정 값이 없는지 확인합니다.
이렇게 not in은 특정 값이 없으면 True, 있으면 False가 나옵니다.
26.1.2  set를 사용하여 세트 만들기
이번에는 set를 사용하여 세트를 만들어보겠습니다.
set에는 반복 가능한 객체(iterable)를 넣습니다(반복 가능한 객체는 '?39.1 반복 가능한 객체 알아보기'에서 설명). 여기서는 간단하게 문자열과 range로 세트를 만들어보겠습니다.
set('apple')과 같이 영문 문자열을 세트로 만들면 'apple'에서 유일한 문자인 'a', 'p', 'l', 'e'만 세트로 만들어집니다. 즉, 중복된 문자는 포함되지 않습니다.
>>> a = set('apple')    # 유일한 문자만 세트로 만듦 >>> a {'e', 'l', 'a', 'p'}
그리고 set(range(5))와 같이 숫자를 만들어내는 range를 사용하면 0부터 4까지 숫자를 가진 세트를 만들 수 있습니다.
>>> b = set(range(5)) >>> b {0, 1, 2, 3, 4}
빈 세트는 c = set()과 같이 set에 아무것도 지정하지 않으면 됩니다.
>>> c = set() >>> c set()
단, 세트가 { }를 사용한다고 해서 c = {}와 같이 만들면 빈 딕셔너리가 만들어지므로 주의해야 합니다. 다음과 같이 type을 사용하면 자료형의 종류를 알 수 있습니다.
>>> c = {} >>> type(c)   >>> c = set() >>> type(c)
참고 | 한글 문자열을 세트로 만들기
set을 사용하여 한글 문자열을 세트로 만들면 다음과 같이 음절 단위로 세트가 만들어집니다.
>>> set('안녕하세요') {'녕', '요', '안', '세', '하'}
참고 | 세트 안에 세트 넣기
세트는 리스트, 딕셔너리와 달리 세트 안에 세트를 넣을 수 없습니다.
>>> a = {{1, 2}, {3, 4}} Traceback (most recent call last):   File " ", line 1, in       a = {{1, 2}, {3, 4}} TypeError: unhashable type: 'set'
참고 | 프로즌 세트
파이썬은 내용을 변경할 수 없는 세트도 제공합니다.
>>> a = frozenset(range(10)) >>> a frozenset({0, 1, 2, 3, 4, 5, 6, 7, 8, 9})
이름 그대로 얼어 있는(frozen) 세트입니다. frozenset는 뒤에서 설명할 집합 연산과 메서드에서 요소를 추가하거나 삭제하는 연산, 메서드는 사용할 수 없습니다. 즉, 다음과 같이 frozenset의 요소를 변경하려고 하면 에러가 발생합니다.
>>> a = frozenset(range(10)) >>> a |= 10 Traceback (most recent call last):   File " ", line 1, in       a |= 10 TypeError: unsupported operand type(s) for |=: 'frozenset' and 'int' >>> a.update({10}) Traceback (most recent call last):   File " ", line 1, in       a.update({10}) AttributeError: 'frozenset' object has no attribute 'update'
그런데 요소를 변경할 수 없는 frozenset는 왜 사용할까요? frozenset는 세트 안에 세트를 넣고 싶을 때 사용합니다. 다음과 같이 frozenset는 frozenset를 중첩해서 넣을 수 있습니다. 단, frozenset만 넣을 수 있고, 일반 set는 넣을 수 없습니다.
>>> frozenset({frozenset({1, 2}), frozenset({3, 4})}) frozenset({frozenset({1, 2}), frozenset({3, 4})})
◀ 25.8 심사문제: 딕셔너리에서 특정 값 삭제하기26.2 집합 연산 사용하기 ▶︎
Unit 1. 소프트웨어 교육과 파이썬
Unit 2. 파이썬 설치하기
Unit 3. Hello, world!로 시작하기
Unit 4. 기본 문법 알아보기
Unit 5. 숫자 계산하기
Unit 6. 변수와 입력 사용하기
Unit 7. 출력 방법 알아보기
Unit 8. 불과 비교, 논리 연산자 알아보기
Unit 9. 문자열 사용하기
Unit 10. 리스트와 튜플 사용하기
Unit 11. 시퀀스 자료형 활용하기
Unit 12. 딕셔너리 사용하기
Unit 13. if 조건문으로 특정 조건일 때 코드 실행하기
Unit 14. else를 사용하여 두 방향으로 분기하기
Unit 15. elif를 사용하여 여러 방향으로 분기하기
Unit 16. for 반복문으로 Hello, world! 100번 출력하기
Unit 17. while 반복문으로 Hello, world! 100번 출력하기
Unit 18. break, continue로 반복문 제어하기
Unit 19. 계단식으로 별 출력하기
Unit 20. FizzBuzz 문제
Unit 21. 터틀 그래픽스로 그림 그리기
Unit 22. 리스트와 튜플 응용하기
Unit 23. 2차원 리스트 사용하기
Unit 24. 문자열 응용하기
Unit 25. 딕셔너리 응용하기
Unit 26. 세트 사용하기
26.2 집합 연산 사용하기
26.4 세트의 할당과 복사
26.5 반복문으로 세트의 요소를 모두 출력하기
26.6 세트 표현식 사용하기
26.8 연습문제: 공배수 구하기
26.9 심사문제: 공약수 구하기
Unit 27. 파일 사용하기
Unit 28. 회문 판별과 N-gram 만들기
Unit 29. 함수 사용하기
Unit 30. 함수에서 위치 인수와 키워드 인수 사용하기
Unit 31. 함수에서 재귀호출 사용하기
Unit 32. 람다 표현식 사용하기
Unit 33. 클로저 사용하기
Unit 34. 클래스 사용하기
Unit 35. 클래스 속성과 정적, 클래스 메서드 사용하기
Unit 36. 클래스 상속 사용하기
Unit 37. 두 점 사이의 거리 구하기
Unit 38. 예외 처리 사용하기
Unit 39. 이터레이터 사용하기
Unit 40. 제너레이터 사용하기
Unit 41. 코루틴 사용하기
Unit 42. 데코레이터 사용하기
Unit 43. 정규표현식 사용하기
Unit 44. 모듈과 패키지 사용하기
Unit 45. 모듈과 패키지 만들기
Unit 46. 실전예제: 웹의 데이터로 그래프 그리기
C 언어 코딩 도장
- 이 사이트에 실린 모든 내용, 디자인, 이미지, 편집 구성의 저작권은 (주)도서출판 길벗과 지은이에게 있습니다.
- 저작권법에 의해 보호를 받는 저작물이므로 무단 전재와 복제를 금합니다.
- 책의 내용을 복제하여 블로그, 웹사이트 등에 게시할 수 없습니다.
- 링크, SNS 공유는 허용합니다.
서울시 마포구 서교동 월드컵로 10길 56 (서울시 마포구 서교동 467-9)
Copyright © 2016-2021 Coding Dojang