이 튜토리얼에서는 Python Set 유형과 효과적으로 사용하는 방법에 대해 배웁니다.
1. Python Set 유형 소개
Python 세트는 불변 요소의 정렬되지 않은 목록입니다.
Set의 요소는 순서가 없습니다.
- Set(집합)의 요소는 고유합니다. 중복 요소를 허용하지 않습니다.
- Set의 요소는 변경할 수 없습니다. 예를 들어 숫자, 문자열 및 튜플일 수 있지만 목록이나 사전일 수는 없습니다.
Python에서 집합을 정의하려면 중괄호 {}를 사용합니다.
예를 들면 다음과 같습니다.
skills = {'Python programming','Databases', 'Software design'}
사전도 중괄호를 사용하지만 해당 요소는 키-값 쌍입니다.
빈 Set(집합)을 정의하려면 다음과 같이 중괄호를 사용할 수 없습니다.
empty_set = {}
...빈 사전을 정의하기 때문입니다.
따라서 내장된 set() 함수를 사용해야 합니다.
empty_set = set()
빈 집합은 부울 컨텍스트에서 False로 평가됩니다.
예를 들면 다음과 같습니다.
skills = set()
if not skills:
print('Empty sets are falsy')
Output:
Empty sets are falsy
실제로 set() 함수에 iterable을 전달하여 집합을 만들 수 있습니다.
예를 들어 다음과 같이 반복 가능한 목록을 set() 함수에 전달할 수 있습니다.
skills = set(['Problem solving','Critical Thinking'])
print(skills)
Output:
{'Critical Thinking', 'Problem solving'}
요소의 원래 순서가 유지되지 않을 수 있습니다.
iterable에 중복 요소가 있으면 set() 함수가 해당 요소를 제거합니다.
예를 들면 다음과 같습니다.
characters = set('letter')
print(characters)
Output:
{'r', 'l', 't', 'e'}
이 예에서 문자열 'letter'에는 두 개의 e 및 t 문자가 있으며 set()은 이들을 각각 제거합니다.
2. Set(집합)의 크기 가져오기
세트의 요소 수를 얻으려면 내장된 len() 함수를 사용합니다.
len(set)
For example:
ratings = {1, 2, 3, 4, 5}
size = len(ratings)
print(size)
Output:
5
3. Set(집합) 안에 요소(element)가 있는지 체크방법
Set(집합)에 요소가 포함되어 있는지 확인하려면 in 연산자를 사용합니다.
element in set
Set()에 요소가 포함되어 있으면 in 연산자는 True를 반환합니다.
그렇지 않으면 False를 반환합니다.
사용예:
ratings = {1, 2, 3, 4, 5}
rating = 1
if rating in ratings:
print(f'The set contains {rating}')
Output:
The set contains 1
in 연산자를 부정하려면 not 연산자를 사용합니다.
사용예:
ratings = {1, 2, 3, 4, 5}
rating = 6
if rating not in ratings:
print(f'The set does not contain {rating}')
Output:
The set does not contain 6
4. Set(집합)에 요소(elements) 추가하기
Set()에 요소를 추가하려면 add() 메서드를 사용합니다.
set.add(element)
For example:
skills = {'Python programming', 'Software design'}
skills.add('Problem solving')
print(skills)
Output:
{'Problem solving', 'Software design', 'Python programming'}
5. Set(집합)에 요소(elements) 삭제하기
Set()에서 요소를 제거하려면 remove() 메서드를 사용합니다.
set.remove(element)
For example:
skills = {'Problem solving', 'Software design', 'Python programming'}
skills.remove('Software design')
print(skills)
Output:
{'Problem solving', 'Python programming'}
세트에 존재하지 않는 요소를 제거하면 오류(KeyError)가 발생합니다.
사용예:
skills = {'Problem solving', 'Software design', 'Python programming'}
skills.remove('Java')
Error:
KeyError: 'Java'
오류를 방지하려면 in 연산자를 사용하여 요소를 제거하기 전에 세트에 있는지 확인해야 합니다.
skills = {'Problem solving', 'Software design', 'Python programming'}
if 'Java' in skills:
skills.remove('Java')
보다 편리하게 하기 위해 집합에는 요소를 제거할 수 있는 discard() 메서드가 있습니다. 요소가 목록에 없으면 오류가 발생하지 않습니다.
set.discard(element)
For example:
skills = {'Problem solving', 'Software design', 'Python programming'}
skills.discard('Java')
6. Set(집합)에 요소(elements) 반환(Return) 하기
집합에서 요소를 제거하고 반환하려면 pop() 메서드를 사용합니다.
집합의 요소에는 특정 순서가 없으므로 pop() 메서드는 집합에서 지정되지 않은 요소를 제거합니다.
다음 코드를 여러 번 실행하면 매번 다른 값이 표시됩니다.
skills = {'Problem solving', 'Software design', 'Python programming'}
skill = skills.pop()
print(skill)
7. Set(집합)에서 요소(elements) 전체 삭제하기
집합에서 모든 요소를 제거하려면 clear() 메서드를 사용합니다.
set.clear()
For example:
skills = {'Problem solving', 'Software design', 'Python programming'}
skills.clear()
print(skills)
Output:
set()
8. frozenset 사용방법
집합을 불변으로 만들려면 frozenset()이라는 내장 함수를 사용합니다. frozenset()은 기존 세트에서 새로운 불변 세트를 반환합니다. 예를 들어:
skills = {'Problem solving', 'Software design', 'Python programming'}
skills = frozenset(skills)
그런 다음 집합의 요소를 수정하려고 하면 오류가 발생합니다.
skills.add('Django')
Error:
AttributeError: 'frozenset' object has no attribute 'add'
9. set elements 반복처리방법
집합은 반복 가능하므로 for 루프를 사용하여 해당 요소를 반복할 수 있습니다. 예를 들어:
skills = {'Problem solving', 'Software design', 'Python programming'}
for skill in skills:
print(skill)
Output:
Software design
Python programming
Problem solving
루프 내 현재 요소의 인덱스에 액세스하려면 내장된 enumerate() 함수를 사용할 수 있습니다.
skills = {'Problem solving', 'Software design', 'Python programming'}
for index, skill in enumerate(skills):
print(f"{index}.{skill}")
Output:
0.Software design
1.Python programming
2.Problem solving
기본적으로 인덱스는 0에서 시작합니다. 이를 변경하려면 enumerate() 함수의 두 번째 인수에 시작 값을 전달합니다. 예를 들어:
skills = {'Problem solving', 'Software design', 'Python programming'}
for index, skill in enumerate(skills, 1):
print(f"{index}.{skill}")
Output:
1.Python programming
2.Problem solving
3.Software design
코드를 실행할 때마다 다른 순서로 설정된 요소를 얻게 됩니다.
10. Summary
집합은 불변 요소의 정렬되지 않은 모음입니다.
refreance:https://www.pythontutorial.net/python-basics/python-set/
'Programing > Python' 카테고리의 다른 글
Python Set Union: Set 합집합 사용하기 (0) | 2023.03.13 |
---|---|
Python Set Comprehension 사용하기 (0) | 2023.03.13 |
Python Dictionary Comprehension 사용 방법 (0) | 2023.03.10 |
Python Dictionary 사용방법? (0) | 2023.03.09 |
Python List Comprehensions: 파이썬 List 이해하기 (0) | 2023.03.09 |
댓글