码迷,mamicode.com
首页 > 其他好文 > 详细

迭代器

时间:2018-11-05 19:11:14      阅读:157      评论:0      收藏:0      [点我收藏+]

标签:特点   col   运算   作用   特殊   __iter__   函数   关系   查看   

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取值的时候才会生成

记住你要多少个值,当前该给你什么,并且记住我下一个该给你什么,下一个个当前这个数的关系

  

迭代器

标签:特点   col   运算   作用   特殊   __iter__   函数   关系   查看   

原文地址:https://www.cnblogs.com/z1115230598/p/9910323.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!