解压缩zip对象时出现ValueError错误

3
我使用以下代码创建了一个zip对象:

我使用以下代码创建了一个zip对象:

k=zip([1,2,3],['a','b','c'])

将其转换为列表后,输出结果如下:
[(1,'a'),(2,'b'),(3,'c')]

但是,当我使用这行代码时

x,y=zip(*k)

我的代码出现 ValueError 错误:

"ValueError: not enough values to unpack (expected 2, got 0)"

我一直在尝试找出问题所在,但是无法找到任何线索。


它对我有效。你使用相同的示例是否出现了错误? - deadshot
4
迭代器不能被多次使用。 - user2357112
你的代码肯定还有其他问题。我把你的问题转化成了一行代码,它可以正常工作。请运行这个一行代码并确认它是否适用于你:zip(*list(zip([1,2,3],['a','b','c']))) - Cerno
是的,我做了@komatiraju032。 - random math student
这对我有效,显然如果我在创建zip对象后立即使用该行,则它也有效,但如果我在此之前将其用于其他事情,则无效。正如您之前的评论所指出的@Cerno。是的,您的第二个评论似乎也有效。谢谢! - random math student
显示剩余2条评论
1个回答

4

zip 方法返回一个迭代器,当你打印它时,你会消耗它,因此在打印后 k 为空。

  • apply the second zip directly

    k = zip([1,2,3],['a','b','c'])
    x,y = zip(*k)
    print(x, "/", y) # (1, 2, 3) / ('a', 'b', 'c')
    
  • wrap it in a list to use it multiple times

    k = list(zip([1,2,3],['a','b','c']))
    print(k)         # [(1, 'a'), (2, 'b'), (3, 'c')]
    x,y = zip(*k)
    print(x, "/", y) # (1, 2, 3) / ('a', 'b', 'c')
    

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接