我認爲[]和list()是創建列表的兩種平等方式。但是,如果你想與dictionnary鍵列表,python3中的[]和列表()之間的區別
var = [a_dict.keys()]
不起作用,因爲type(var)
是[dict_keys]
,正確的語法是:
var = list(a_dict.keys())
我找不到對這種行爲的很好的解釋。你是否有一個 ?
我認爲[]和list()是創建列表的兩種平等方式。但是,如果你想與dictionnary鍵列表,python3中的[]和列表()之間的區別
var = [a_dict.keys()]
不起作用,因爲type(var)
是[dict_keys]
,正確的語法是:
var = list(a_dict.keys())
我找不到對這種行爲的很好的解釋。你是否有一個 ?
a_dict.keys()
是dictionary view object,它返回一個對象,它可以被迭代以產生a_dict
的鍵。所以這條線:
[a_dict.keys()]
是說在python「我在這做一個列表與一個元素」,這一個元素是字典鍵迭代器。這是一個列表文字的語法。
現在這行:
list(a_dict.keys())
是對list
內置函數的調用。此函數list
嘗試迭代參數並生成一個列表。這是語法中的函數調用。
等效列表文字(實際列表理解)是改爲:
[key for key in a_dict.keys()]
希望這有助於的
[a_dict.keys()]
這一個將單個元素放在列表中。就好像你要寫[1]一樣。在這種情況下,一個元素將成爲一個列表。
list(a_dict.keys())
該構造函數接受一個序列,並將序列的所有元素添加到容器。
注意,這與'dict_keys'無關,'[anything]'總是構造一個單元素列表,'list(iterable)'總是通過遍歷'iterable'來生成一個列表。 – delnan 2014-11-14 14:39:48
另請注意,所有其他容器的工作方式相似。 – 2014-11-14 14:44:22
可能重複[在Python,爲什麼名單(無)一個錯誤,但\ [無\ ]是不是?](http://stackoverflow.com/questions/24120448/in-python-why-is-listnone-an-error-but-none-is-not) – jonrsharpe 2014-11-14 14:37:00
我從中學到了什麼,總是使用new_list = list()比new_list = []更安全。之後一個不混合兩種語法。 – comte 2014-11-14 15:23:26
一旦你理解了兩種形式之間的區別,這不是問題。但是,如果您覺得額外的幾個字符可以爲您節省一些疑惑,那就去吧! – jonrsharpe 2014-11-14 15:24:44