可能重複:
Creating a list in Python- something sneaky going on?
Creating an empty list in PythonMYLIST =列表()與MYLIST = []在Python
考慮以下幾點:
mylist = list()
和:
mylist = []
使用list()
或[]
有什麼好處 - 應該在某種情況下使用另一種嗎?
可能重複:
Creating a list in Python- something sneaky going on?
Creating an empty list in PythonMYLIST =列表()與MYLIST = []在Python
考慮以下幾點:
mylist = list()
和:
mylist = []
使用list()
或[]
有什麼好處 - 應該在某種情況下使用另一種嗎?
對於一個空的列表,我建議使用[]
。這會更快,因爲它避免了內置名稱list
的名稱查找。內置名稱也可以用全局或本地名稱覆蓋;這隻會影響list()
,而不會影響[]
。
的list()
內置的是有用的一些其他的迭代轉換到一個列表,但:
a = (1, 2, 3)
b = list(a)
爲了完整起見,兩個選項在我的機器上的空列表的時機(Python的2.7.3rc2,英特爾酷睿2):
In [1]: %timeit []
10000000 loops, best of 3: 35 ns per loop
In [2]: %timeit list()
10000000 loops, best of 3: 145 ns per loop
顯式>隱式呢?當我看到「list()」時,我不會眨眼睛。如果我看到「[]」,我會考慮兩次,特別是當我發現python爲dict()和set()引入{}時:? – gsk 2012-08-02 15:16:01
@gsk:包含兩個元素'[1,2]'的列表;一個元素列表:'[1]';沒有元素'[]'的列表。對我來說似乎相當明確。我知道同樣的例子在Python 3中看起來會有所不同 - 這是關於3.x的唯一設計決定,我不喜歡。 – 2012-08-02 15:17:35
@gsk,並且在沒有參數的情況下調用list()時我會考慮兩次。 []對我來說更加明確,而且根據定義......這是定義。 – Logan 2012-08-02 15:23:53
兩者是完全等效的,只是它是可能的重新定義標識符list
來指代不同的對象。因此,使用[]
更安全,除非您希望能夠將list
重新定義爲新類型。
從技術上講,使用[]
會稍微快一些,因爲它避免了名稱查找。這在任何情況下都不太可能是重要的,除非該計劃經常和激烈地分配清單。
正如Sven所指出的,list
有其他用途,但當然這個問題並沒有問到那些問題。
我傾向於認爲'[]'會更快,因爲它保存了一個函數調用,但我以前錯了。你是否嘗試過測量這個? – 2012-08-02 15:04:34
@FrédéricHamidi - 我很確定我在之前的SO帖子中看到過這個。我會盡力找到它... – mgilson 2012-08-02 15:05:13
我還沒有嘗試過測量,我會盡快更新,謝謝Frederic – Sherlock 2012-08-02 15:05:26