중괄호를 사용하여 Python에서 집합 초기화


98

저는 파이썬을 배우고 있으며 세트 초기화에 대한 초보자 질문이 있습니다. 테스트를 통해 세트가 다음과 같이 초기화 될 수 있음을 발견했습니다.

my_set = {'foo', 'bar', 'baz'}

다음과 같은 표준 방식과 달리 이런 방식으로 수행하는 데 단점이 있습니까?

my_set = set(['foo', 'bar', 'baz'])

아니면 스타일 문제일까요?


2
문서에 언급되어 있지만 거기에는 없습니다. 이것은 더 이상 사용되지 않는 모듈에 대한 문서이며 실제 세트는 이제 내장되어 있습니다. 이 글은 다음의 "무엇을 파이썬 2.7의 새로운 기능"문서 및 언어 참조 간단히 그것을 설명 docs.python.org/2/reference/expressions.html#set-displays

@delnan 저는 python 2.7을 사용하므로 python 3 문서를 살펴볼 생각이 없었습니다. 내가 게시 한 링크는 2.7 용이지만 이상하게도 언급하지 않습니다.
fvrghl 2013-06-28

1
나는 내 의견을 편집 한 이후 2.7 문서에서도 이것을 언급합니다. 게시 한 링크는 오래되고 과거의 유물이며 잘못되었으며 더 이상 사용되지 않습니다. 존재한다는 사실을 잊어 버리고 대신 사용 하라는 메시지를 사용하십시오. docs.python.org/2/library/stdtypes.html#setdocs.python.org/2/library/stdtypes.html#frozenset

@delnan 도와 주셔서 감사합니다. 나는 더 이상 문서가 없다고 말하지 않도록 질문을 편집했습니다 (온라인에서 이것을 언급하는 예는 거의 없지만).
fvrghl 2013-06-28

통과자 : Pycharm은 리터럴을 사용할 수있을 때 함수 호출을 사용하지 않도록 경고합니다. 성능상의 이유가있을 수 있습니다. 새 코드에서 설정된 리터럴 방식을 선호합니다
Mr_and_Mrs_D

답변:


102

집합 리터럴 구문에는 두 가지 명백한 문제가 있습니다.

my_set = {'foo', 'bar', 'baz'}
  1. Python 2.7 이전에는 사용할 수 없습니다.

  2. 해당 구문을 사용하여 빈 집합을 표현할 수있는 방법이 없습니다 (사용 {}하면 빈 사전이 생성됨).

그것들은 당신에게 중요하거나 중요하지 않을 수 있습니다.

이 구문을 설명하는 문서 섹션은 여기에 있습니다 .


46

한 단어 인수를 사용하여 {}및 의 차이점도 비교하십시오 set().

>>> a = set('aardvark')
>>> a
{'d', 'v', 'a', 'r', 'k'} 
>>> b = {'aardvark'}
>>> b
{'aardvark'}

하지만 모두 ab과정의 집합입니다.


4
내가 좋아하는 이유는 다음과 같이 자신에게 세트 생성자를 생각 나게하는 것이 set([])아니라 단지보다 set().
Michael Ekoka 16.16.16

3
set()항상 단일 인수를 취하십시오. 단일 반복 가능.
George Kettleborough

1
@GeorgeKettleborough 단일 또는 인수 없음 , 후자는 빈 집합을 만듭니다.
gertvdijk

28

에서 파이썬 3 문서 ( 같은 파이썬 2.7에 대한 보유 ) :

중괄호 또는 set () 함수를 사용하여 집합을 만들 수 있습니다. 참고 : 빈 집합을 만들려면 {}가 아닌 set ()을 사용해야합니다. 후자는 다음 섹션에서 논의 할 데이터 구조 인 빈 사전을 만듭니다.

파이썬 2.7에서 :

>>> my_set = {'foo', 'bar', 'baz', 'baz', 'foo'}
>>> my_set
set(['bar', 'foo', 'baz'])

그주의 {}도 사용됩니다 map/ dict:

>>> m = {'a':2,3:'d'}
>>> m[3]
'd'
>>> m={}
>>> type(m)
<type 'dict'> 

포괄적 인 구문을 사용하여 집합을 초기화 할 수도 있습니다.

>>> a = {x for x in """didn't know about {} and sets """ if x not in 'set' }
>>> a
set(['a', ' ', 'b', 'd', "'", 'i', 'k', 'o', 'n', 'u', 'w', '{', '}'])

1

empty_set = set()빈 집합을 초기화 해야합니다 . {}빈 사전입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.