파이썬 - 집합 연습
안녕하세요, 미래의 파이썬 마법사 여러분! 오늘은 파이썬 집합의 마법적인 세계에 뛰어들어보겠습니다. 아직 코드를 작성해본 적이 없다고 해도 걱정하지 마세요 – 여러분의 친절한 가이드로서 이 흥미로운 여정을 동행하겠습니다. 이 튜토리얼을 끝내면 여러분은 프로처럼 집합을 소환할 수 있을 것입니다!
집합이란?
연습에 뛰어들기 전에 파이썬에서 집합이란 무엇인지 빠르게 이해해보겠습니다. 마바丽的 가방을 상상해보세요, 하지만 각 마바리는 가방에 한 번만 나타날 수 있습니다. 이것이 바로 파이썬에서의 집합과도 같습니다 – 고유한 항목들의 모음입니다.
집합은 순서가 없기 때문에 항목들은 특정 위치가 없습니다. 또한 가변적이기 때문에 항목을 추가하거나 제거할 수 있습니다. 하지만 항목 자체는 불변해야 합니다 (숫자나 문자열처럼, 리스트는 아닙니다).
이제 손을 불어 올리고 코딩을 시작해보겠습니다!
파이썬 집합 연습 1: 집합 생성 및 조작
집합 생성
쉽게 말하자면, 다음과 같은 간단한 집합을 생성해보겠습니다:
fruits = {"apple", "banana", "cherry"}
print(fruits)
이 코드를 실행하면 다음과 같은 결과를 볼 수 있습니다:
{'cherry', 'banana', 'apple'}
입력한 것과는 다른 순서로 나오는 것을 보았나요? 그 이유는 집합이 순서가 없기 때문입니다!
집합에 항목 추가
이제 더 많은 과일을 우리의 집합에 추가해보겠습니다:
fruits.add("dragonfruit")
print(fruits)
fruits.update(["elderberry", "fig"])
print(fruits)
출력:
{'cherry', 'banana', 'apple', 'dragonfruit'}
{'fig', 'cherry', 'banana', 'elderberry', 'apple', 'dragonfruit'}
add()
를 단일 항목에 사용하고, update()
를 여러 항목에 사용했는지 보았나요? 마바리 한 개를 가방에 추가하는 것과 마바리 한捧을 쏟는 것과 같아요!
집합에서 항목 제거
이제 일부 과일을 제거해보겠습니다:
fruits.remove("banana")
print(fruits)
fruits.discard("grape") # "grape"가 집합에 없어도 에러를 일으키지 않습니다
print(fruits)
출력:
{'fig', 'cherry', 'elderberry', 'apple', 'dragonfruit'}
{'fig', 'cherry', 'elderberry', 'apple', 'dragonfruit'}
remove()
는 항목이 존재하지 않으면 에러를 일으키고, discard()
는 에러를 일으키지 않습니다. 특정 마바리를 신중하게 고를 것과 가볍게 고를 것을 비교하는 것과 같아요.
파이썬 집합 연습 2: 집합 연산
기본적인 것을 마스터하였으므로, 이제 여러 집합을 가지고 놀아보겠습니다!
집합의 합집합
여러분과 친구가 모두 마바리 가방을 가지고 있다고 상상해보세요. 합집합은 여러분이 함께 가지고 있는 모든 고유한 마바리입니다.
set1 = {1, 2, 3, 4, 5}
set2 = {4, 5, 6, 7, 8}
union_set = set1.union(set2)
print(union_set)
출력:
{1, 2, 3, 4, 5, 6, 7, 8}
집합의 교집합
교집합은 여러분과 친구가 공통으로 가지고 있는 마바리입니다.
intersection_set = set1.intersection(set2)
print(intersection_set)
출력:
{4, 5}
집합의 차집합
차집합은 여러분이 가지고 있고 친구가 가지고 있지 않은 마바리입니다.
difference_set = set1.difference(set2)
print(difference_set)
출력:
{1, 2, 3}
파이썬 집합 연습 3: 고급 집합 연산
레벨 업을 준비됐나요? 더 많은 고급 연산을 해결해보겠습니다!
대칭 차집합
이는 양쪽 집합 중 하나에만 있고, 두 집합에 모두 없는 마바리를 제공합니다.
symmetric_difference = set1.symmetric_difference(set2)
print(symmetric_difference)
출력:
{1, 2, 3, 6, 7, 8}
부집합과 권장집합
한 집합이 다른 집합에 포함되어 있는지 확인해보겠습니다:
set3 = {1, 2, 3}
print(set3.issubset(set1)) # set3은 set1의 부집합인가요?
print(set1.issuperset(set3)) # set1은 set3의 권장집합인가요?
출력:
True
True
이는 여러분의 모든 마바리가 친구의 더 큰 모음에도 포함되어 있는지 확인하는 것과 같아요!
동결 집합
때로는 변경할 수 없는 집합이 필요합니다. 동결 집합을 소개합니다:
frozen_fruits = frozenset(["apple", "banana", "cherry"])
print(frozen_fruits)
# 이는 에러를 일으킵니다:
# frozen_fruits.add("dragonfruit")
출력:
frozenset({'cherry', 'banana', 'apple'})
동결 집합은 마바리가 얼음 속에 녹아들어 가방에 닫혀 있음을 상상해보세요 – 볼 수는 있지만 만지지는 못합니다!
집합 메서드 요약
여기는 우리가 배운 집합 메서드의 손쉬운 표가 있습니다:
메서드 | 설명 |
---|---|
add() | 집합에 요소를 추가합니다 |
update() | 다른 집합이나 이터러블에서 요소들로 집합을 업데이트합니다 |
remove() | 지정된 요소를 제거합니다 (없으면 에러 발생) |
discard() | 지정된 요소를 제거합니다 (없어도 에러不发생) |
union() | 합집합을 포함하는 집합을 반환합니다 |
intersection() | 교집합을 포함하는 집합을 반환합니다 |
difference() | 집합 간의 차이를 포함하는 집합을 반환합니다 |
symmetric_difference() | 양쪽 집합 중 하나에만 있는 요소들을 포함하는 집합을 반환합니다 |
issubset() | 한 집합이 다른 집합의 부집합인지 확인합니다 |
issuperset() | 한 집합이 다른 집합의 권장집합인지 확인합니다 |
그리고 이렇게 끝났습니다, 여러분! 파이썬 기술을 집합으로 레벨 업했습니다. 규칙이 완벽함을 기억하세요, 이 개념들을 계속 연습해보세요. 알고보면 여러분은 진짜 파이썬 마법사처럼 집합을 조작할 수 있을 거예요!
Credits: Image by storyset