CodeGym /자바 코스 /Python SELF KO /부분집합 얻기

부분집합 얻기

Python SELF KO
레벨 9 , 레슨 4
사용 가능

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
            
        
코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION