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

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

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

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

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

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



답변

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

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

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

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

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


답변

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

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

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


답변

에서 파이썬 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', '{', '}'])


답변

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


답변