4.1 규칙에 따라 부분집합 얻기
부분집합은 그 모든 요소가 다른 더 큰 집합에 포함되어 있는 집합이야. Python에는 부분집합을 다루는 몇 가지 내장 메서드와 연산자가 있어. 아래에서는 부분집합을 얻는 방법, 한 집합이 다른 집합의 부분집합인지 확인하는 방법, 그리고 이러한 지식을 다양한 시나리오에 사용하는 방법을 알려줄게.
for
루프 사용하기
빈 집합을 만들고 for
루프를 사용해 조건을 만족하는 요소들을
그 집합에 추가할 수 있어.
my_set = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
even_set = set()
for x in my_set:
if x % 2 == 0:
even_set.add(x)
print(even_set) # 출력: {2, 4, 6, 8, 10}
이 방법이 가장 간단하고 명료한 방법이야. 하지만 더 간결한 방법도 있어.
filter()
함수 사용하기
filter()
함수는 각 요소에 함수를 적용하고,
함수가 True를 반환하는 요소들만 반환해.
결과는 다시 집합으로 변환해야 해.
my_set = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
even_set = set(filter(lambda x: x % 2 == 0, my_set))
print(even_set) # 출력: {2, 4, 6, 8, 10}
filter()
함수 안에서 람다 표현식을 사용해 -
이건 필터링을 위한 유용한 함수를 빠르게 정의하는 방법이야.
람다에 대해서는 몇 강의 후에 설명할게.
4.2 집합 생성자 사용하기
List Comprehension
기억나? 대괄호 안에서 리스트와 그 요소들을
빠르게 생성하는 방법이었잖아? 이 문법 도구는 이런 형태였어:
[표현식 for 변수 in 시퀀스]
여기서:
-
변수
— 어떤 변수의 식별자, -
시퀀스
— 해당 변수가 취할 수 있는 값의 시퀀스(리스트, 문자열 또는range
함수로 얻은 객체가 될 수 있어), -
표현식
— 일반적으로 생성기 안의 변수에 의존하는 표현식, 리스트의 요소를 채울 때 사용돼.
집합에는 비슷한 기능이 있어, 다만 중괄호를 사용해야 해:
{표현식 for 변수 in 시퀀스}
집합 생성자는 필터링 조건을 적용해 기존 집합을 기반으로 새로운 집합을 쉽고 간결하게 생성할 수 있게 해줘.
이렇게 하면 집합에서 짝수 요소들만 추출할 수 있어:
my_set = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
even_set = {x for x in my_set if x % 2 == 0}
print(even_set) # 출력: {2, 4, 6, 8, 10}
이렇게 하면 문자열 요소들만 추출할 수 있어:
my_set = {1, 2, 3, 4, 5, 6, 7, 8, 9, "apple", "banana"}
even_set = {x for x in my_set if type(x) == str}
print(even_set) # 출력: {"apple", "banana"}
4.3 요소 존재 여부 확인하기
Python에서 집합을 사용할 때 수행할 수 있는 기본적인 작업 중 하나는 집합 내에 요소가 존재하는지 확인하는 것이야. Python에는 이것을 수행하는 몇 가지 방법이 있어. 우리는 다양한 방법을 살펴볼 거야.
in
연산자 사용하기
집합 내의 요소 존재 여부를 확인하는 가장 흔하고 편리한 방법은
in
연산자를 사용하는 거야. 이 방법은
요소가 집합에 존재하면 True
를 반환하고,
그렇지 않으면 False
를 반환해.
my_set = {1, 2, 3, 4, 5}
print(3 in my_set) # 출력: True
print(6 in my_set) # 출력: False
not in
연산자 사용하기
not in
연산자는 in
연산자의
반대이며 요소가 집합에 존재하지 않음을 확인하는 데 사용돼.
이 경우 요소가 존재하지 않으면 True
를 반환하고,
존재하면 False
를 반환해.
my_set = {1, 2, 3, 4, 5}
print(6 not in my_set) # 출력: True
print(3 not in my_set) # 출력: False
루프 사용하기
요소 존재 여부를 확인할 때 루프를 사용하는 것이 가장 효율적인 방법은 아니지만, 더 복잡한 데이터 구조를 사용할 때 또는 추가적인 조작을 수행할 때 유용할 수 있어.
my_set = {1, 2, 3, 4, 5}
element = 3
found = False
for item in my_set:
if item == element:
found = True
break
print(found) # 출력: True
4.4 집합 안에 집합 있는지 확인하기
Python은 한 집합이 다른 집합의 부분집합인지 확인하기 위해
연산자 <=
와
issubset()
메서드를 제공해.
<=
연산자 사용하기
<=
연산자는 한 집합이 다른 집합의 부분집합인지 쉽게 확인할 수 있게 해줘.
set_a = {1, 2, 3}
set_b = {1, 2, 3, 4, 5}
print(set_a <= set_b) # 출력: True
print(set_b <= set_a) # 출력: False
issubset()
메서드 사용하기
issubset()
메서드는 <=
연산자와 같은
기능을 수행하며, 한 집합의 모든 요소가 다른 집합에 포함되어 있는 경우
True
를 반환해.
set_a = {1, 2, 3}
set_b = {1, 2, 3, 4, 5}
print(set_a.issubset(set_b)) # 출력: True
print(set_b.issubset(set_a)) # 출력: False
상위집합 여부 확인하기
부분집합과 마찬가지로, 한 집합이 다른 집합의 상위집합인지 확인할 수 있어.
>=
연산자와
issuperset()
메서드를 사용해.
>=
연산자 사용하기
set_a = {1, 2, 3, 4, 5}
set_b = {1, 2, 3}
print(set_a >= set_b) # 출력: True
print(set_b >= set_a) # 출력: False
issuperset()
메서드 사용하기
set_a = {1, 2, 3, 4, 5}
set_b = {1, 2, 3}
print(set_a.issuperset(set_b)) # 출력: True
print(set_b.issuperset(set_a)) # 출력: False
GO TO FULL VERSION