我正在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比较陌生。
答案 0 :(得分:0)
之所以会这样,是因为result=zip(numberList, strList)
返回了迭代器。它类似于itertools.izip
在python 2.x中所做的
先前在python 2 zip
中用于返回元组。
从python 3 zip
返回一个迭代器。迭代器仅返回一次值。当第二次尝试对其进行迭代时,则没有任何输出。
如果您需要再次使用它,则应考虑将其用作
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)