我正在學習python,並且我有一個關於初始化集的新手問題。通過測試,我發現了一組能夠像這樣被初始化:使用大括號初始化集
my_set = {'foo', 'bar', 'baz'}
有沒有做這種方式的任何缺點,而不是標準的方法:
my_set = set(['foo', 'bar', 'baz'])
或者是它只是一個風格問題?
我正在學習python,並且我有一個關於初始化集的新手問題。通過測試,我發現了一組能夠像這樣被初始化:使用大括號初始化集
my_set = {'foo', 'bar', 'baz'}
有沒有做這種方式的任何缺點,而不是標準的方法:
my_set = set(['foo', 'bar', 'baz'])
或者是它只是一個風格問題?
有與設置文本語法兩個明顯的問題:
my_set = {'foo', 'bar', 'baz'}
這是不可用的Python之前2.7
有沒有辦法來表達使用語法空集(使用{}
創建一個空的字典)
那些可能或者可能對你不重要。
概述此語法的文檔部分是here。
從Python 3 documentation(同樣適用蟒2.7):
大括號或set()函數可以被用來創建集。注意: 要創建一個空集,你必須使用set(),而不是{};後者 創建一個空字典,我們在 下一節討論的數據結構。
在Python 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', '{', '}'])
Ç ompare還有一個單詞參數{}
和set()
之間的差異。
>>> a = set('aardvark')
>>> a
{'d', 'v', 'a', 'r', 'k'}
>>> b = {'aardvark'}
>>> b
{'aardvark'}
但兩者a
和b
是一組課程。
中的集合文字方式,這就是爲什麼我想提醒自己設置構造函數爲set( [])'而不僅僅是'set()'。 –
'set()'總是帶一個參數。一個單一的迭代。 –
該文件確實提到它,只是不存在。請注意,這是不推薦模塊的文檔,* real *集合現在已內置。它位於「Python 2.7新增功能」文檔中,語言參考對其進行了簡要描述:http://docs.python.org/2/reference/expressions.html#set-displays – delnan
@delnan我使用python 2.7,所以我沒有想到看python 3文檔。我發佈的鏈接是2.7,但奇怪的是沒有提到這一點。 – fvrghl
我自編輯我的評論以來,2.7文檔也提到了這一點。您發佈的鏈接已過時,是過去的遺蹟,錯誤,已棄用。忘記它存在並使用它本身告訴您使用的內容:http://docs.python.org/2/library/stdtypes.html#set和http://docs.python.org/2/library/stdtypes 。html#frozenset – delnan