迭代器
Posted z1115230598
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了迭代器相关的知识,希望对你有一定的参考价值。
iter 迭代
iterable 可迭代
整数类型是不可迭代的
dir函数是查看一个数据类型内部含有哪些方法
两边带着双下划线的方法就叫做‘魔术方法‘‘双下方法‘‘内置方法‘
可迭代协议:只要含有__iter__方法的数据类型都是可以迭代的
可迭代的都可以使用for循环
检查某个变量/值 是不是可迭代的呢
1.print(‘__iter__‘in dir([]))
2form collection import Iterable
print(isinstance([],iterable))
迭代器的作用;
节省空间
for循环就是利用了迭代器节省内存的特点来对Python当中的变量来进行操作
res=[1,2,3,4]
print(res.__length__()) 查看迭代器中有多少个元素
print(res.__setstate__() 控制迭代器从哪开始迭代
print(res.__next__()) 从迭代器中取下一个值
for 循环一个列表的时候必须用的
__next__ 取下一个值
迭代器协议:
内部含有__next__ 和__iter__ 的方法的值变量都是迭代器
如何让创建一个迭代器
可迭代变量.__iter__() 返回一个迭代器
迭代器的特点:(节省内存,惰性运算,一次性取值只能按顺序取)
具有next和iter 方法
通过一个next多次执行就可以获得所有这个容器中的值
迭代器中的值只能取一次
不能取的时候不出现
for循环取值
第一种 for
第二种 next
第三种 数据类型的类型转换
for循环内部的机制就是迭代器取值的机制
在for循环执行过程中:先把可迭代的变成一个迭代器,然后只在丛中一个一个的取值
for循环和可迭代的关系
所有的迭代器都是可迭代的
迭代器都是特殊的存在
for循环和迭代器的关系
无论是可迭代的还是迭代器都可以被for循环
如果直接循环迭代器,那么循环一次就没有了
如果循环的是飞迭代器,那么每一次循环相当于从头到尾的循环
range生成的就是迭代器 创建这个迭代器并不会真的吧迭代器中的所有数据一次性生成
什么时候生成呢?
只有通过next取值的时候才会生成
记住你要多少个值,当前该给你什么,并且记住我下一个该给你什么,下一个个当前这个数的关系
以上是关于迭代器的主要内容,如果未能解决你的问题,请参考以下文章