为什么我的zip返回项目不能在Python中应用设置两次?
为了说明我的问题,这里是一个最小的代码。
x = [1,2,3]
y = ['a','b','c']
m = zip(x,y)
print(set(m))
print(set(m))
我希望第二个print(set(m))会产生与第一个相同的结果print(set(m)),但这是我们得到的......
{(1, 'a'), (2, 'b'), (3, 'c')}
set()
如果我们替换setto list,结果是一样的。关于为什么会发生这种情况的任何建议?
回答
从 Python 3 开始, zip 现在返回一个迭代器,而不是一个列表。
您的第一个 set 调用“展开”了 m 引用的迭代器(使用它)。
下次调用时为空。
要解决此问题,请使用
m=list(zip(x,y)).