我是靠谱客的博主 虚心人生,这篇文章主要介绍Python3迭代器——迭代器只能往前不会后退迭代器参考,现在分享给大家,希望可以做个参考。

迭代器

  • 迭代是Python最强大的功能之一,是访问集合元素的一种方式。

  • 迭代器是一个可以记住遍历的位置的对象。

  • 迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退

  • 迭代器有两个基本的方法:iter() 和 next()。

注意,迭代器只能往前不能后退!

遇到的问题

在使用zip()函数的过程中,发现多了一行pirnt代码会导致最终输出结果不一致。
代码如下:

复制代码
1
2
3
4
5
6
7
8
9
10
a = [1,2,3] b = [4,5,6] zipped = zip(a,b) # 打包为元组的列表 print("list(zipped):",list(zipped)) t = zip(*zipped) # 与 zip 相反,可理解为解压,返回二维矩阵式 print("t:", t) print("____________") for i1 in t: print(i1)

输出如下:

复制代码
1
2
3
4
list(zipped): [(1, 4), (2, 5), (3, 6)] t: <zip object at 0x7f45b5ec9500> ____________

但如果将代码print("list(zipped):",list(zipped))删除,for循环便可以正常输出解压后的内容。

复制代码
1
2
3
4
5
6
7
8
9
10
a = [1,2,3] b = [4,5,6] zipped = zip(a,b) # 打包为元组的列表 # print("list(zipped):",list(zipped)) t = zip(*zipped) # 与 zip 相反,可理解为解压,返回二维矩阵式 print("t:", t) print("____________") for i1 in t: print(i1)

输出:

复制代码
1
2
3
4
5
t: <zip object at 0x7f45b5ee0190> ____________ (1, 2, 3) (4, 5, 6)

解惑

百思不得其解,在和同学探讨后,发现zip()函数返回的其实是一个迭代器,而迭代器有一个非常重要且容易被忽略的性质 ——“迭代器只能往前不会后退”

print那一行已经将所有元素访问完毕,所以后续for循环遍历为空。
将print那一行代码注释,便可以正常输出了。

参考

Python3 迭代器与生成器

最后

以上就是虚心人生最近收集整理的关于Python3迭代器——迭代器只能往前不会后退迭代器参考的全部内容,更多相关Python3迭代器——迭代器只能往前不会后退迭代器参考内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(69)

评论列表共有 0 条评论

立即
投稿
返回
顶部