파이썬 세트

set는 변경 가능하고 순서가 지정되지 않은 개체 모음입니다. frozensetset 와 유사하지만 변경할 수 없습니다. 자세한 내용은 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])에 대해 무엇을 반환합니까?
  • 좋은 웹페이지 즐겨찾기