CodeGym/행동/Python SELF KO/부분집합 얻기

부분집합 얻기

사용 가능

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
2
과제
Python SELF KO,  레벨 9레슨 4
잠금
명확하지만 무작위
명확하지만 무작위
2
과제
Python SELF KO,  레벨 9레슨 4
잠금
제곱 생성기
제곱 생성기
코멘트
  • 인기
  • 신규
  • 이전
코멘트를 남기려면 로그인 해야 합니다
이 페이지에는 아직 코멘트가 없습니다