逃跑只是计划 2022-06-05 15:59 采纳率: 33.3%
浏览 65
已结题

学习python中zip()函数遇到的问题

问题相关代码
A = [1,2,3,4]                  
B = (1,2,3,4)
C = 'copy'
D = zip(A,B,C)
print(list(D))
Q,W,R = zip(*D)     
print(Q)
运行结果及报错内容

not enough values to unpack (expected 3, got 0)

请问大家为什么把 Q,W,R = zip(*D) print(Q) 写在 print(list(D)),之后就会报错呢
先写 Q,W,R = zip(*D) print(Q) 后写 print(list(D)) 就会得到结果:(1, 2, 3, 4) []

是因为zip(*D)把D的内容删除了吗?不是很理解

附代码和结果:

img

img

  • 写回答

1条回答 默认 最新

  • 请叫我问哥 Python领域新星创作者 2022-06-05 17:02
    关注

    zip生成的是个迭代器,迭代器的典型特征就是只能读取一遍(阅后即焚),在前面已经用list(D)读取过一遍了,所以D的内容就为空了。
    很多函数返回的数据类型都是迭代器,比如map,也是这种阅后即焚的效果。好处就是他们不占内存空间,只有在读取的时候才会生成数据。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 6月13日
  • 已采纳回答 6月5日
  • 创建了问题 6月5日

悬赏问题

  • ¥15 ansys fluent计算闪退
  • ¥15 有关wireshark抓包的问题
  • ¥15 需要写计算过程,不要写代码,求解答,数据都在图上
  • ¥15 向数据表用newid方式插入GUID问题
  • ¥15 multisim电路设计
  • ¥20 用keil,写代码解决两个问题,用库函数
  • ¥50 ID中开关量采样信号通道、以及程序流程的设计
  • ¥15 U-Mamba/nnunetv2固定随机数种子
  • ¥15 vba使用jmail发送邮件正文里面怎么加图片
  • ¥15 vb6.0如何向数据库中添加自动生成的字段数据。