파이썬 - 집합 연습

안녕하세요, 미래의 파이썬 마법사 여러분! 오늘은 파이썬 집합의 마법적인 세계에 뛰어들어보겠습니다. 아직 코드를 작성해본 적이 없다고 해도 걱정하지 마세요 – 여러분의 친절한 가이드로서 이 흥미로운 여정을 동행하겠습니다. 이 튜토리얼을 끝내면 여러분은 프로처럼 집합을 소환할 수 있을 것입니다!

Python - Set Exercises

집합이란?

연습에 뛰어들기 전에 파이썬에서 집합이란 무엇인지 빠르게 이해해보겠습니다. 마바丽的 가방을 상상해보세요, 하지만 각 마바리는 가방에 한 번만 나타날 수 있습니다. 이것이 바로 파이썬에서의 집합과도 같습니다 – 고유한 항목들의 모음입니다.

집합은 순서가 없기 때문에 항목들은 특정 위치가 없습니다. 또한 가변적이기 때문에 항목을 추가하거나 제거할 수 있습니다. 하지만 항목 자체는 불변해야 합니다 (숫자나 문자열처럼, 리스트는 아닙니다).

이제 손을 불어 올리고 코딩을 시작해보겠습니다!

파이썬 집합 연습 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