zip()返回值作为一个迭代器,可以使用list,方便查看

1、循环zip返回的对象,第一次有值,第二次就没有值

在这里插入图片描述
| 在这里插入图片描述

2、查看zip 文档

在这里插入图片描述
zip()方法返回一个zip对象,该对象的next()方法返回一个元组,其中,第 i 个元素来自第 i 个可迭代的参数,直到参数序列中最短的迭代被耗尽,然后抛出异常停止迭代,否则 next() 方法将持续返回元组。

3、分析

重点就是这个 zip对象 是一个迭代器。 迭代器只能前进,不能后退。 比如说测试一的代码,在for循环结束的时候,迭代器的内部指针已经指向了内部的最后一个元组,然后到了下面执行列表生成式的时候,迭代器只能前进不能后退,所以指针没有被重置,可是迭代器已经没有元组可返回了,所以 打印出来的是 空list。同理可知,测试二的代码,当执行完列表生成器以后,就不会再执行for循环了,空的东西还怎么遍历呢?

至于 为什么 zip 返回的 zip对象是迭代器,可以查看廖雪峰老师的连接: 点击跳转 迭代器 -廖雪峰

4、可迭代对象(Iterable)、迭代器(Iterator)

  • 可以直接用于for循环的对象统称为可迭代对象(Iterable),又叫可迭代类型(Iterable类型

  • 可以被next()函数调用并不断返回下一个值的对象 称为迭代器(Iterator),都是Iterator类型,它们表示一个惰性计算的序列;

  • 迭代器(Iterator )都是可迭代的对象(Iterable),但是可迭代对象,不一定是迭代器。比如:集合数据类型如list、dict、str等是Iterable,但不是Iterator,不过可以通过iter()函数获得一个Iterator对象。


链接:https://blog.csdn.net/benpaodelulu_guajian/article/details/81869462

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

还能坚持

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值