본문 바로가기
Programing/Python

Python Set: 집합 자료형 사용방법

by 멍멍돌이야 2023. 3. 10.
반응형

이 튜토리얼에서는 Python Set 유형과 효과적으로 사용하는 방법에 대해 배웁니다.

 

1. Python Set 유형 소개

Python 세트는 불변 요소의 정렬되지 않은 목록입니다. 

 

Set의 요소는 순서가 없습니다.

  • Set(집합)의 요소는 고유합니다. 중복 요소를 허용하지 않습니다.
  • Set의 요소는 변경할 수 없습니다. 예를 들어 숫자, 문자열 및 튜플일 수 있지만 목록이나 사전일 수는 없습니다.

 

Python에서 집합을 정의하려면 중괄호 {}를 사용합니다. 

예를 들면 다음과 같습니다.

python
skills = {'Python programming','Databases', 'Software design'}

사전도 중괄호를 사용하지만 해당 요소는 키-값 쌍입니다.

빈 Set(집합)을 정의하려면 다음과 같이 중괄호를 사용할 수 없습니다.

python
empty_set = {}

...빈 사전을 정의하기 때문입니다.

따라서 내장된 set() 함수를 사용해야 합니다.

python
empty_set = set()

빈 집합은 부울 컨텍스트에서 False로 평가됩니다. 

 

예를 들면 다음과 같습니다.

python
skills = set() if not skills: print('Empty sets are falsy')

Output:

python
Empty sets are falsy

실제로 set() 함수에 iterable을 전달하여 집합을 만들 수 있습니다. 

예를 들어 다음과 같이 반복 가능한 목록을 set() 함수에 전달할 수 있습니다.

python
skills = set(['Problem solving','Critical Thinking']) print(skills)

Output:

python
{'Critical Thinking', 'Problem solving'}

요소의 원래 순서가 유지되지 않을 수 있습니다.

iterable에 중복 요소가 있으면 set() 함수가 해당 요소를 제거합니다. 

예를 들면 다음과 같습니다.

python
characters = set('letter') print(characters)

Output:

python
{'r', 'l', 't', 'e'}

이 예에서 문자열 'letter'에는 두 개의 e 및 t 문자가 있으며 set()은 이들을 각각 제거합니다.

 

2. Set(집합)의 크기 가져오기

세트의 요소 수를 얻으려면 내장된 len() 함수를 사용합니다.

python
len(set)

 

For example:

python
ratings = {1, 2, 3, 4, 5} size = len(ratings) print(size)

 

Output:

python
5

 

3. Set(집합) 안에 요소(element)가 있는지 체크방법

Set(집합)에 요소가 포함되어 있는지 확인하려면 in 연산자를 사용합니다.

python
element in set

Set()에 요소가 포함되어 있으면 in 연산자는 True를 반환합니다.

그렇지 않으면 False를 반환합니다.

 

사용예:

python
ratings = {1, 2, 3, 4, 5} rating = 1 if rating in ratings: print(f'The set contains {rating}')

Output:

python
The set contains 1

in 연산자를 부정하려면 not 연산자를 사용합니다. 

 

사용예:

python
ratings = {1, 2, 3, 4, 5} rating = 6 if rating not in ratings: print(f'The set does not contain {rating}')

Output:

python
The set does not contain 6

 

4. Set(집합)에 요소(elements) 추가하기

Set()에 요소를 추가하려면 add() 메서드를 사용합니다.

python
set.add(element)

For example:

python
skills = {'Python programming', 'Software design'} skills.add('Problem solving') print(skills)

Output:

python
{'Problem solving', 'Software design', 'Python programming'}

 

5. Set(집합)에 요소(elements) 삭제하기

Set()에서 요소를 제거하려면 remove() 메서드를 사용합니다.

python
set.remove(element)

For example:

python
skills = {'Problem solving', 'Software design', 'Python programming'} skills.remove('Software design') print(skills)

Output:

python
{'Problem solving', 'Python programming'}

세트에 존재하지 않는 요소를 제거하면 오류(KeyError)가 발생합니다. 

 

사용예:

python
skills = {'Problem solving', 'Software design', 'Python programming'} skills.remove('Java')

Error:

python
KeyError: 'Java'

오류를 방지하려면 in 연산자를 사용하여 요소를 제거하기 전에 세트에 있는지 확인해야 합니다.

python
skills = {'Problem solving', 'Software design', 'Python programming'} if 'Java' in skills: skills.remove('Java')

보다 편리하게 하기 위해 집합에는 요소를 제거할 수 있는 discard() 메서드가 있습니다. 요소가 목록에 없으면 오류가 발생하지 않습니다.

python
set.discard(element)

For example:

python
skills = {'Problem solving', 'Software design', 'Python programming'} skills.discard('Java')

 

6. Set(집합)에 요소(elements) 반환(Return) 하기

집합에서 요소를 제거하고 반환하려면 pop() 메서드를 사용합니다.

집합의 요소에는 특정 순서가 없으므로 pop() 메서드는 집합에서 지정되지 않은 요소를 제거합니다.

다음 코드를 여러 번 실행하면 매번 다른 값이 표시됩니다.

python
skills = {'Problem solving', 'Software design', 'Python programming'} skill = skills.pop() print(skill)

 

7. Set(집합)에서 요소(elements) 전체 삭제하기

집합에서 모든 요소를 제거하려면 clear() 메서드를 사용합니다.

python
set.clear()

For example:

python
skills = {'Problem solving', 'Software design', 'Python programming'} skills.clear() print(skills)

Output:

python
set()

 

8. frozenset 사용방법

집합을 불변으로 만들려면 frozenset()이라는 내장 함수를 사용합니다. frozenset()은 기존 세트에서 새로운 불변 세트를 반환합니다. 예를 들어:

python
skills = {'Problem solving', 'Software design', 'Python programming'} skills = frozenset(skills)

그런 다음 집합의 요소를 수정하려고 하면 오류가 발생합니다.

python
skills.add('Django')

Error:

python
AttributeError: 'frozenset' object has no attribute 'add'

 

9. set elements 반복처리방법

집합은 반복 가능하므로 for 루프를 사용하여 해당 요소를 반복할 수 있습니다. 예를 들어:

python
skills = {'Problem solving', 'Software design', 'Python programming'} for skill in skills: print(skill)

Output:

python
Software design Python programming Problem solving

루프 내 현재 요소의 인덱스에 액세스하려면 내장된 enumerate() 함수를 사용할 수 있습니다.

python
skills = {'Problem solving', 'Software design', 'Python programming'} for index, skill in enumerate(skills): print(f"{index}.{skill}")

Output:

python
0.Software design 1.Python programming 2.Problem solving

기본적으로 인덱스는 0에서 시작합니다. 이를 변경하려면 enumerate() 함수의 두 번째 인수에 시작 값을 전달합니다. 예를 들어:

python
skills = {'Problem solving', 'Software design', 'Python programming'} for index, skill in enumerate(skills, 1): print(f"{index}.{skill}")

Output:

python
1.Python programming 2.Problem solving 3.Software design

코드를 실행할 때마다 다른 순서로 설정된 요소를 얻게 됩니다.


10. Summary

집합은 불변 요소의 정렬되지 않은 모음입니다.

 

 

refreance:https://www.pythontutorial.net/python-basics/python-set/
728x90
반응형

댓글