2017-10-17 111 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()没有参数产生一个空的对象。