Python'da bir Set başlatmak için küme parantezi kullanın


109

Python öğreniyorum ve setleri başlatmakla ilgili acemi bir sorum var. Test yoluyla, bir setin şu şekilde başlatılabileceğini keşfettim:

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

Standart yolun aksine, bu şekilde yapmanın herhangi bir dezavantajı var mı?

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

yoksa bu sadece bir tarz meselesi mi?


2
Belgeler bundan bahsediyor, sadece orada değil. Bunun kullanımdan kaldırılmış bir modülün dokümantasyonu olduğuna dikkat edin, gerçek setler artık yerleşiktir. "Python 2.7'deki Yenilikler

@delnan python 2.7 kullanıyorum, bu yüzden python 3 belgelerine bakmayı düşünmedim. Gönderdiğim bağlantı 2.7 için, ancak tuhaf bir şekilde bundan bahsetmiyor.
fvrghl

1
Yorumumu düzenlediğimden beri, 2.7 dokümanlar da bundan bahsediyor. Gönderdiğiniz bağlantı güncel değil, geçmişin kalıntısı, yanlış, kullanımdan kaldırılmış. Var olduğunu unutun ve onun yerine size kullanmanızı söylediği şeyi kullanın: docs.python.org/2/library/stdtypes.html#set ve docs.python.org/2/library/stdtypes.html#frozenset

@delnan Bana yardım ettiğin için teşekkürler. Soruyu düzenledim, böylece artık onun için herhangi bir belge olmadığını söylemeyeceğim (çevrimiçi bundan bahseden birkaç örnek olmasına rağmen).
fvrghl

Geçenler için: Pycharm, biri değişmez bir değer kullanılabildiğinde bir işlev çağrısı kullanılmasına karşı uyarır - performans nedenleri olabilir - bu nedenle, yeni kodda tam olarak ayarlanan yolu tercih edin
Mr_and_Mrs_D

Yanıtlar:


108

Ayarlanan değişmez sözdizimiyle ilgili iki bariz sorun vardır:

my_set = {'foo', 'bar', 'baz'}
  1. Python 2.7'den önce mevcut değil

  2. Bu sözdizimini kullanarak boş bir küme ifade etmenin bir yolu yoktur (kullanmak {}boş bir dikte oluşturur)

Bunlar sizin için önemli olabilir veya olmayabilir.

Dokümanların bu sözdizimini özetleyen bölümü burada .


51

Tek kelimelik argüman arasındaki {}ve arasındaki farkı da karşılaştırın set().

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

ama ikisi de ave belbette setler.


6
bu yüzden kendime set kurucusunu set([])sadece değil olarak hatırlatmayı seviyorum set().
Michael Ekoka

4
set()her zaman tek bir argüman alın. Tek bir yinelenebilir.
George Kettleborough

1
@GeorgeKettleborough tek veya bağımsız bir argüman, ikincisi boş bir küme oluşturmak için.
gertvdijk

28

Gönderen Python 3 belgelerinde ( aynı piton 2.7 için de geçerlidir ):

Küme oluşturmak için küme ayraçları veya set () işlevi kullanılabilir. Not: boş bir küme oluşturmak için {} değil, set () kullanmanız gerekir; ikincisi, bir sonraki bölümde tartışacağımız bir veri yapısı olan boş bir sözlük oluşturur.

python 2.7'de:

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

Unutmayın {}de kullanılır map/ ' dict:

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

Kümeleri başlatmak için kapsamlı sözdizimi de kullanılabilir:

>>> 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', '{', '}'])

3

empty_set = set()Boş bir küme başlatmak için yapmanız gerekir . {}boş dict.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.