我在Python3 shell上运行这段代码。
numberList = [1, 2, 3]
strList = ['one', 'two', 'three']
result=zip(numberList, strList)
resultSet=set(result) #1
resultList=list(result) #2
print(resultSet)
print(resultList)
我对结果感到非常惊讶:
{(1, 'one'), (3, 'three'), (2, 'two')}
[] <<< Why?
此外,当我line#1
与line#2
交换时,结果与前面的结果相似:
set() <<< Why?
[(1, 'one'), (2, 'two'), (3, 'three')]
后来一个空的背后可能是什么原因? 我在这里错过了任何概念吗?仅供参考,我对Python相对较新。
发生这种情况是因为result=zip(numberList, strList)
返回一个迭代器。它类似于itertools.izip
在python 2.x中所做的。 以前在python 2中zip
用于返回元组。
从 python 3zip
返回一个迭代器。迭代器只返回一次值。当第二次尝试迭代它时,则不会给出任何输出。
如果您需要再次使用它,您应该考虑将其用作
numberList = [1, 2, 3]
strList = ['one', 'two', 'three']
result=list(zip(numberList, strList)) # check the "list" keyword added
resultList=list(result) #2
resultSet=set(result) #1
print(resultSet)
print(resultList)