迭代器&可迭代对象

迭代器

能够被next调用, 并不断返回值的一个对象
惰性排序, 一次只获取一个数据, (占用一个空间)
迭代器可以遍历无限量的数据

特点:

1.惰性序列, 节省内存

2.遍历使用next, 方向不可逆

3.迭代器可以遍历无限量大的数据

1. 可迭代对象

 1 # 判断是不是可迭代对象
 2 # 使用dir(obj) 看是否实现__iter__
 3 setvar = {1, 2, 4, 5}
 4 print(‘__iter__‘ in dir(setvar))
 5
 6
 7 """
 8 把可迭代对象变成迭代器:
 9     iter(obj)
10     obj.__iter__()
11
12 迭代器调用的时候:
13     obj.__next__()
14     next(obj)
15 """
16 # 方法一
17 iter1 = setvar.__iter__()
18 # 方法二
19 iter2 = iter(setvar)
20
21
22 # 调用的时候
23 iter1.__next__()
24 iter1.__next__()
25 iter1.__next__()
26 # next(iter1)   超出元素范围, 会报错

关于for循环:

1 for i in setvar:
2     print(i)
3
4 # for 循环会把迭代对象变成迭代器, 然后调用next()

2.迭代器

 1 # 判断是不是迭代器
 2
 3 # 1.使用dir(obj)  有没有__next__
 4 print(‘__next__‘ in dir(iter1))
 5
 6 # 2.使用isinstance
 7 from collections import Iterable, Iterator
 8 print(isinstance(iter1, Iterable))
 9 print(isinstance(iter1, Iterator))
10
11
12
13 # 判断range的迭代属性
14 print(isinstance(range(5), Iterable))
15 print(isinstance(range(5), Iterator))
16
17
18 # 吧range变成迭代器
19 res = range(5).__iter__()
20 print(isinstance(res, Iterator))

原文地址:https://www.cnblogs.com/caihuajiaoshou/p/10611924.html

时间: 2024-10-10 11:13:15

迭代器&可迭代对象的相关文章

迭代器/可迭代对象/生成器

先上本文主题: 迭代器一定是可迭代对象,可迭代对象不一定是迭代器; 可迭代对象要满足什么条件才能使用 for 正确遍历; 生成器一定是迭代器. 如何判断是否是迭代器/可迭代对象 from collections.abc import Iterator,Iterable t = [] # 是否为迭代器 isinstance(t,Iterator) # 是否为可迭代对象 isinstance(t,Iterable) 可迭代对象 实现了__iter__魔法方法,就是可迭代对象. class Test:

Python——迭代器&可迭代对象

可迭代对象 什么是对象: Python中,一切皆对象.一个变量,一个列表,一个字符串,文件句柄,函数等等都可称为一个对象.一个对象就是一个实例,就是实实在在的东西. 什么是迭代 迭代就是一个重复的过程,但还不是单纯的重复,就像是父亲,自己,儿子,孙子的关系,都是复制,但结果是不一样的.还有使用的APP,微信,抖音等隔一段时间就会基于上一次做一些更新,那么这就是迭代. 结论: 可迭代对象从字面意思就是一个可以重复取值的实施在在的东西. 不可迭代的有: 在Python中,有很多可迭代对象,那么就说说

可迭代对象和迭代器

1.首先可以用于for循环的对象统称为可迭代对象(Interable),像list dict str都是可迭代对象.可以被next()函数调用并不断返回下一个值的对象成为迭代器(Interable).看一下函数的实现: class Iterable(metaclass=ABCMeta): __slots__ = () @abstractmethod def __iter__(self): ##使用__iter__是迭代对象变为迭代器 while False: yield None @classm

可迭代对象,迭代器(对象),生成器(对象)

迭代器 可迭代对象:可迭代对象实现了__iter__方法,该方法返回一个迭代器对象. 迭代器: 那么什么迭代器呢?它是一个带状态的对象,他能在你调用next()方法的时候返回容器中的下一个值,任何实现了__iter__和__next__()(python2中实现next())方法的对象都是迭代器,__iter__返回迭代器自身,__next__返回容器中的下一个值,如果容器中没有更多元素了,则抛出StopIteration异常. a = ['aaa', 'bbb', 'ccc'] my_iter

Python 函数名,可迭代对象及迭代器

函数名是什么?1,函数名就是函数的内存地址a = 2b = ac = bprint(c)2,函数名可以作为变量.def func1(): print(666)f1 = func1()f2 = f1print(f2)3,函数名可以作为函数的参数.def func1(): print(666)def func2(x): print(x) x()print(func1)函数名可以当做函数的返回值.def wapper(): def inner(): print('inner') return inne

11.Python初窥门径(函数名,可迭代对象,迭代器)

Python(函数名,可迭代对象,迭代器) 一.默认参数的坑 # 比较特殊,正常来说临时空间执行结束后应该删除,但在这里不是. def func(a,l=[]): l.append(a) return l print(func(1)) # [1] print(func(2)) # [1,2] print(func(3)) # [1,2,3] 二.函数名的应用 函数名指向的是函数的内存地址,加上()就执行这个函数 def func(args): return args print(func) #

解决python疑难杂症—什么是迭代协议、迭代对象和迭代器?

什么是迭代协议 只要某个类型(类)定义了iter()和next()方法就表示支持迭代协议. iter()需要返回一个可迭代对象.只要定义了iter()就表示能够通过for/in/map/zip等迭代工具进行对应的迭代,也可以手动去执行迭代操作. 1 for x in Iterator 2 X in Iterator 同时,可迭代对象还可以作为某些函数参数,例如将可迭代对象构建成一个列表list(Iterator)来查看这个可迭代对象会返回哪些数据: L = list(Iterator) 需要注意

Python 迭代器协议以及可迭代对象、迭代器对象

一.迭代器协议定义: 迭代:是一个重复的过程,每一次重复,都是基于上一次的结果而来 while True: #单纯的重复 print('你瞅啥') l=['a','b','c','d'] count=0 while count < len(l): print(l[count]) count+=1 迭代器协议是指:对象必须提供一个next方法,执行该方法要么返回迭代中的下一项,要么就引起一个StopIteration异常,以终止迭代 (只能往后走不能往前退) 二.可迭代对象定义: 实现了迭代器协议

Python 迭代对象、迭代器、生成器详解

在了解Python的数据结构时,容器(container).可迭代对象(iterable).迭代器(iterator).生成器(generator).列表/集合/字典推导式(list,set,dict comprehension)众多概念参杂在一起,难免让初学者一头雾水,本文将一一为大家进行介绍,希望对大家学习python有所帮助. 容器(container) 容器是一种把多个元素组织在一起的数据结构,容器中的元素可以逐个地迭代获取,可以用 in ,  not in 关键字判断元素是否包含在容器