Python 에서 집합이 문자열만 포함하는지 확인하는 방법

PythonBeginner
지금 연습하기

소개

이 랩에서는 Python 에서 집합 (set) 이 문자열만 포함하는지 확인하는 방법을 배우게 됩니다. 먼저 문자열 집합의 기본 사항을 살펴보고, 집합 생성, 요소의 고유성, 합집합 (union) 및 교집합 (intersection) 과 같은 일반적인 집합 연산을 포함합니다. ~/project 디렉토리에 string_sets.py 파일을 생성하고 python 명령을 사용하여 코드 조각을 실행하여 집합이 중복 항목을 처리하고 집합 연산을 수행하는 방식을 관찰합니다.

그런 다음 이 랩에서는 isinstance()와 함께 all() 함수를 사용하여 집합 내의 모든 요소가 실제로 문자열인지 확인하는 방법을 안내합니다. 마지막으로, 빈 집합을 처리하고 문자열만 포함하는 집합을 확인할 때 이 예외 케이스를 코드가 적절하게 관리하는 방법을 배우게 됩니다.

문자열 집합에 대해 알아보기

이 단계에서는 Python 에서 문자열 집합에 대해 배우게 됩니다. 집합 (set) 은 고유한 요소들의 정렬되지 않은 컬렉션입니다. 즉, 집합은 중복된 값을 포함할 수 없습니다. 집합은 합집합 (union), 교집합 (intersection), 차집합 (difference) 과 같은 수학적 집합 연산을 수행하는 데 유용합니다. 이 랩에서는 문자열을 포함하는 집합에 중점을 둡니다.

먼저, 간단한 문자열 집합을 만들어 보겠습니다. LabEx 환경에서 VS Code 편집기를 엽니다. ~/project 디렉토리에 string_sets.py라는 새 파일을 만듭니다.

## ~/project/string_sets.py
string_set = {"apple", "banana", "cherry"}
print(string_set)

파일을 저장합니다. 이제 터미널에서 python 명령을 사용하여 스크립트를 실행합니다.

python ~/project/string_sets.py

다음과 같은 출력을 볼 수 있습니다 (집합은 정렬되지 않으므로 요소의 순서는 다를 수 있습니다).

{'cherry', 'banana', 'apple'}

이제 집합에 중복된 요소를 추가하고 어떤 일이 발생하는지 살펴보겠습니다.

## ~/project/string_sets.py
string_set = {"apple", "banana", "cherry", "apple"}
print(string_set)

파일을 저장하고 다시 실행합니다.

python ~/project/string_sets.py

출력은 다음과 같습니다.

{'cherry', 'banana', 'apple'}

중복된 "apple"이 자동으로 제거되었음을 알 수 있습니다. 집합은 고유한 요소만 저장합니다.

다음으로, 몇 가지 일반적인 집합 연산을 살펴보겠습니다. 두 개의 집합을 만들고 합집합과 교집합 연산을 수행합니다.

## ~/project/string_sets.py
set1 = {"apple", "banana", "cherry"}
set2 = {"banana", "date", "fig"}

## Union of two sets
union_set = set1.union(set2)
print("Union:", union_set)

## Intersection of two sets
intersection_set = set1.intersection(set2)
print("Intersection:", intersection_set)

파일을 저장하고 실행합니다.

python ~/project/string_sets.py

출력은 다음과 같습니다.

Union: {'cherry', 'banana', 'date', 'apple', 'fig'}
Intersection: {'banana'}

두 집합의 합집합은 두 집합의 모든 고유한 요소를 포함합니다. 교집합은 두 집합 모두에 공통적으로 포함된 요소만 포함합니다.

isinstance() 와 함께 all() 적용하기

이 단계에서는 집합의 모든 요소가 문자열인지 확인하기 위해 all() 함수를 isinstance()와 함께 사용하는 방법을 배우게 됩니다.

all() 함수는 반복 가능한 객체 (예: 집합) 의 모든 요소가 참 (true) 이면 True를 반환합니다. 요소 중 하나라도 거짓 (false) 이면 all()False를 반환합니다.

isinstance() 함수는 객체가 특정 클래스의 인스턴스인지 확인합니다. 이 경우, 집합의 각 요소가 문자열인지 확인하는 데 사용합니다.

먼저 문자열만 포함하는 집합을 만들어 보겠습니다. VS Code 편집기를 사용하여 ~/project 디렉토리에서 string_sets.py 파일을 엽니다. 다음 코드를 포함하도록 파일을 수정합니다.

## ~/project/string_sets.py
string_set = {"apple", "banana", "cherry"}

## Check if all elements are strings
all_strings = all(isinstance(item, str) for item in string_set)
print("Are all elements strings?", all_strings)

파일을 저장합니다. 이제 터미널에서 python 명령을 사용하여 스크립트를 실행합니다.

python ~/project/string_sets.py

다음과 같은 출력을 볼 수 있습니다.

Are all elements strings? True

이는 집합의 모든 요소가 문자열임을 확인합니다.

이제 문자열이 아닌 요소 (예: 정수) 를 집합에 추가하고 어떤 일이 발생하는지 살펴보겠습니다.

## ~/project/string_sets.py
string_set = {"apple", "banana", "cherry", 123}

## Check if all elements are strings
all_strings = all(isinstance(item, str) for item in string_set)
print("Are all elements strings?", all_strings)

파일을 저장하고 다시 실행합니다.

python ~/project/string_sets.py

출력은 다음과 같습니다.

Are all elements strings? False

예상대로, 집합의 모든 요소가 문자열이 아니기 때문에 all() 함수는 False를 반환합니다.

이 기술은 데이터를 검증하고 집합이 특정 유형의 요소만 포함하는지 확인하는 데 유용합니다.

빈 집합 확인하기

이 단계에서는 Python 에서 집합이 비어 있는지 확인하는 방법을 배우게 됩니다. 빈 집합은 요소를 포함하지 않는 집합입니다.

빈 집합을 확인하는 것은 프로그래밍, 특히 데이터 처리 또는 조건부 로직을 다룰 때 일반적인 작업입니다.

빈 집합을 만들려면 인수가 없는 set() 생성자를 사용할 수 있습니다. VS Code 편집기를 사용하여 ~/project 디렉토리의 string_sets.py 파일을 수정하여 다음 코드를 포함해 보겠습니다.

## ~/project/string_sets.py
empty_set = set()

## Check if the set is empty
if not empty_set:
    print("The set is empty")
else:
    print("The set is not empty")

파일을 저장합니다. 이제 터미널에서 python 명령을 사용하여 스크립트를 실행합니다.

python ~/project/string_sets.py

다음과 같은 출력을 볼 수 있습니다.

The set is empty

이는 empty_set 집합이 실제로 비어 있음을 확인합니다.

이제 비어 있지 않은 집합을 만들고 로직이 여전히 작동하는지 확인해 보겠습니다.

## ~/project/string_sets.py
non_empty_set = {"apple", "banana", "cherry"}

## Check if the set is empty
if not non_empty_set:
    print("The set is empty")
else:
    print("The set is not empty")

파일을 저장하고 다시 실행합니다.

python ~/project/string_sets.py

출력은 다음과 같습니다.

The set is not empty

예상대로, 코드는 집합이 비어 있지 않음을 올바르게 식별합니다.

집합이 비어 있는지 확인하는 또 다른 방법은 len() 함수를 사용하는 것입니다. 이 함수는 집합의 요소 수를 반환합니다. 길이가 0 이면 집합이 비어 있습니다.

## ~/project/string_sets.py
empty_set = set()

## Check if the set is empty using len()
if len(empty_set) == 0:
    print("The set is empty")
else:
    print("The set is not empty")

파일을 저장하고 실행합니다.

python ~/project/string_sets.py

출력은 다음과 같습니다.

The set is empty

이는 집합이 비어 있는지 확인하는 대체 방법을 보여줍니다.

요약

이 랩에서는 Python 의 문자열 집합에 대해 배웠습니다. 문자열 집합은 고유한 요소의 정렬되지 않은 컬렉션입니다. 문자열 집합을 만들고 중복 요소가 자동으로 제거되는 것을 관찰했으며, 합집합 및 교집합과 같은 일반적인 집합 연산을 탐구했습니다. 이 랩에서는 문자열 집합을 정의하고 기본 연산을 수행하여 동작과 특성을 이해하는 방법을 보여주었습니다.

또한 이 랩에서는 Python 스크립트를 만들고, ~/project 디렉토리에 저장하고, 터미널에서 python 명령을 사용하여 실행하는 방법을 다루었습니다. 집합 연산의 출력을 관찰하여 집합의 정렬되지 않은 특성으로 인해 요소의 순서가 달라질 수 있음을 확인했습니다.