2017-10-17 4 views
-1

のリストを比較:パイソン:ちょうど次の疑問タプル

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

最初は空のタプルを含むリストであり、第二は、空のリストです。

なぜこのコードはTrueの代わりにFalseを出力するのですか(Python 2と3の同じ結果)?

ありがとうございます!

+5

同じ結果が得られないためですか?最初の要素は1要素のリストで、2番目の要素は0要素のリストです。 'list()' **イテラブルをリストに変換します**。タプルは反復可能です。空のタプルをリストに変換します。 –

+0

ありがとうございました! – NI6

答えて

3

リストを1つの要素(空のタプル)と空のリストと比較しました。 list(tuple())は、あなたが思っていることをしません。

list(object)ではないため、はその1つのオブジェクトを要素としてリストを生成します。 list()は、反復可能でなければならないオブジェクトであるをリストに変換します。それはコピー要素outオブジェクトの

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

あなたはそれを空のタプルを与えたので、結果は空のリストです:

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

tuple()は仕方によって、同じことを行います。そして、とtuple()引数なしの両方は、空のオブジェクトを生成します。