2017-10-17 118 views
-1

只是想知道以下的列表:蟒:比較元組

print [()] == list(tuple()) # prints False 

首先是含有空的元組列表,第二個是一個空列表。

爲什麼這段代碼輸出False而不是True(在python 2和3中結果相同)?

在此先感謝!

+5

因爲它們不會產生相同的結果嗎?第一個是帶有1個元素的列表,第二個是帶有零個元素的列表。 'list()'**將一個迭代器轉換爲一個列表**。一個元組是一個可迭代的,你*將一個空元組轉換爲一個列表。 –

+0

明白了,謝謝! – NI6

回答

3

您將列表與空列表中的一個元素(空元組)進行比較。 list(tuple())不符合您的想法。

這是因爲list(object)確實不是產生一個列表與該對象作爲一個元素。 list()轉換爲列表,該對象必須可迭代。它複製的元素出對象的

>>> dictionary = {'foo': 'bar'} 
>>> list(dictionary) # iteration over a dictionary produces keys 
['foo'] 

你給它一個空的元組,所以結果是空列表:

>>> empty =() 
>>> list(empty) 
[] 

tuple()做同樣的事情,順便說一句。並且list()tuple()沒有參數產生一個空的對象。