파이썬 세트
set
는 변경 가능하고 순서가 지정되지 않은 개체 모음입니다. frozenset
는 set
와 유사하지만 변경할 수 없습니다. 자세한 내용은 docs.python: set, frozenset을 참조하십시오.초기화
집합은
{}
중괄호 문자 내에서 쉼표로 구분된 개체 컬렉션으로 선언됩니다. set() 함수는 빈set
을 초기화하고 이터러블을 변환하는 데 사용할 수 있습니다.>>> empty_set = set()
>>> empty_set
set()
>>> nums = {-0.1, 3, 2, -5, 7, 1, 6.3, 5}
# note that the order is not the same as declaration
>>> nums
{-0.1, 1, 2, 3, 5, 6.3, 7, -5}
# duplicates are automatically removed
>>> set([3, 2, 11, 3, 5, 13, 2])
{2, 3, 5, 11, 13}
>>> set('initialize')
{'a', 'n', 't', 'l', 'e', 'i', 'z'}
set
변경 가능한 개체를 요소로 허용하지 않습니다.>>> {1, 3, [1, 2], 4}
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'
>>> {1, 3, (1, 2), 4}
{3, 1, (1, 2), 4}
방법 및 작업 설정
in
연산자는 주어진 set
에 값이 있는지 확인합니다. set
는 해시테이블(dict
키와 유사)을 사용하기 때문에 조회 시간이 일정하고 대규모 데이터 세트의 경우 list
또는 tuple
와 같은 정렬된 컬렉션보다 훨씬 빠릅니다.>>> colors = {'red', 'blue', 'green'}
>>> 'blue' in colors
True
>>> 'orange' in colors
False
다음은 합집합, 교차 등과 같은
set
작업에 대한 몇 가지 예입니다. 메서드나 연산자를 사용할 수 있으며 둘 다 내부 수정 대신 새set
개체를 제공합니다. 차이점은 이러한 메서드는 set
개체에 국한되지 않고 모든 반복 가능한 개체를 허용할 수 있다는 것입니다.>>> color_1 = {'teal', 'light blue', 'green', 'yellow'}
>>> color_2 = {'light blue', 'black', 'dark green', 'yellow'}
# union of two sets: color_1 | color_2
>>> color_1.union(color_2)
{'light blue', 'green', 'dark green', 'black', 'teal', 'yellow'}
# common items: color_1 & color_2
>>> color_1.intersection(color_2)
{'light blue', 'yellow'}
# items from color_1 not present in color_2: color_1 - color_2
>>> color_1.difference(color_2)
{'teal', 'green'}
# items from color_2 not present in color_1: color_2 - color_1
>>> color_2.difference(color_1)
{'dark green', 'black'}
# items present in one of the sets, but not both
# i.e. union of above two operations: color_1 ^ color_2
>>> color_1.symmetric_difference(color_2)
{'green', 'dark green', 'black', 'teal'}
Dict 장에서 언급했듯이
keys()
, values()
및 items()
같은 메서드는 집합과 같은 객체를 반환합니다. 여기에 set
연산자를 적용할 수 있습니다.>>> marks_1 = dict(Rahul=86, Ravi=92, Rohit=75)
>>> marks_2 = dict(Jo=89, Rohit=78, Joe=75, Ravi=100)
>>> marks_1.keys() & marks_2.keys()
{'Ravi', 'Rohit'}
>>> marks_1.keys() - marks_2.keys()
{'Rahul'}
add()
, update()
, symmetric_difference_update()
, intersection_update()
및 difference_update()
와 같은 메소드는 수정을 제자리에서 수행합니다.>>> color_1 = {'teal', 'light blue', 'green', 'yellow'}
>>> color_2 = {'light blue', 'black', 'dark green', 'yellow'}
# union
>>> color_1.update(color_2)
>>> color_1
{'light blue', 'green', 'dark green', 'black', 'teal', 'yellow'}
# adding a single value
>>> color_2.add('orange')
>>> color_2
{'black', 'yellow', 'dark green', 'light blue', 'orange'}
pop()
메서드는 제거되는 임의의 요소를 반환합니다. 값을 기준으로 요소를 삭제하려면 remove()
메서드를 사용합니다. discard()
메서드는 remove()
와 비슷하지만 요소가 존재하지 않으면 오류가 발생하지 않습니다. clear()
메서드는 모든 요소를 삭제합니다.>>> colors = {'red', 'blue', 'green'}
>>> colors.pop()
'blue'
>>> colors
{'green', 'red'}
>>> colors.clear()
>>> colors
set()
다음은 비교 작업에 대한 몇 가지 예입니다.
>>> names_1 = {'Ravi', 'Rohit'}
>>> names_2 = {'Ravi', 'Ram', 'Rohit', 'Raj'}
>>> names_1 == names_2
False
# same as: names_1 <= names_2
>>> names_1.issubset(names_2)
True
# same as: names_2 >= names_1
>>> names_2.issuperset(names_1)
True
# disjoint means there's no common elements: not names_1 & names_2
>>> names_1.isdisjoint(names_2)
False
>>> names_1.isdisjoint({'Jo', 'Joe'})
True
수업 과정
iterable에 중복 값이 있는지 확인하는 함수를 작성하십시오.
>>> has_duplicates('pip')
True
>>> has_duplicates((3, 2))
False
has_duplicates([3, 2, 3.0])
에 대해 무엇을 반환합니까? Reference
이 문제에 관하여(파이썬 세트), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/learnbyexample/python-sets-dep텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)