时间:2021-05-22
本文实例讲述了Python可迭代对象。分享给大家供大家参考,具体如下:
1、列表生成式
list = [result for x in range(m, n)]g1 = (i for i in range(101))print(type(g1))print(g1)print(g1.__next__())输出:
<class 'generator'>
<generator object <genexpr> at 0x0000024E6AC08F10>
0
输出:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
2、可迭代对象
①.可以直接作用于for循环的对象统称为可迭代对象,我们称之为:Iterator
②.我们可以使用isintance()判断一个对象是否是Iterator对象
③.可以直接作用于for循环的数据类型有以下几种
a.集合数据类型:如list、tuple、dict、set和string
b.生成器(generator):就是一个能返回迭代器的函数,其实就是定义一个迭代算法,可以理解为一个特殊的迭代器。
生成器:
通过列表生成式,我们可以直接创建一个列表,但是,受到内存限制,列表容量肯定是有限的,如果我们仅仅需要访问前面几个元素,如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的元素呢?这样就不必创建完整的list,从而节省大量的空间。在Python中,这种一边循环一边计算的机制,称为生成器(Generator)
要创建一个generator,有很多种方法。第一种方法很简单,只要把一个列表生成式的[]改成(),就创建了一个generator。
g1 = (i for i in range(11))print(g1)for i in range(11): print(next(g1),end='\t')输出:
<generator object <genexpr> at 0x00000207F5C69678>
0 1 2 3 4 5 6 7 8 9 10
注意:使用Iterator判断的时候需要导入Iterable的包
from collections import Iterableprint(isinstance([],Iterable))print(isinstance((),Iterable))print(isinstance("",Iterable))print(isinstance({},Iterable))print(isinstance({1,2,3},Iterable))print({1,2,3})print(isinstance(1,Iterable))print(isinstance(1.2,Iterable))g1 = (i for i in range(101))print(isinstance(g1,Iterable))输出:
True
True
True
True
True
{1, 2, 3}
False
False
True
3、迭代器
迭代器:不但可以作用于for循环,还可以被next()函数不断调用并返回下一个值,
直到最后出现StopIteration错误,表示无法返回下一个值
可以被next()函数调用并不断返回下一个值的对象称为迭代器(Iterator对象)
可以使用isinstance()函数判断一个对象是否是Iterator对象。
注意:可迭代对象不一定是迭代器,但是迭代器一定是迭代对象。
可迭代对象与迭代器的关系:
可迭代对象包含迭代器
from collections import Iteratorprint(isinstance([],Iterator))print(isinstance((),Iterator))print(isinstance("",Iterator))print(isinstance({},Iterator))print(isinstance({1,2,3},Iterator))print({1,2,3})print(isinstance(1,Iterator))print(isinstance(1.2,Iterator))g1 = (i for i in range(101))print(isinstance(g1,Iterator))输出:
False
False
False
False
False
{1, 2, 3}
False
False
True
4、 Iterator转换
可以通过Iter()函数将list、tuple、dict、string转换为Iterator对象。
from collections import Iteratorlist1 = [i for i in range(11)]print(isinstance(list1,Iterator))iter1 = iter(list1)print(isinstance(iter1,Iterator))for i in range(11): print(next(iter1),end='\t')输出:
False
True
0 1 2 3 4 5 6 7 8 9 10
更多关于Python相关内容可查看本站专题:《Python数据结构与算法教程》、《Python Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》
希望本文所述对大家Python程序设计有所帮助。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
迭代首先理解下什么是迭代,python中所有从左往右扫面对象的方式都是可迭代的有哪些方式是可迭代的:1.文件操作我们读取文件的时候,会用到一个readline(
Python3的可迭代解包在PEP3132-ExtendedIterableUnpacking里面描述了一种对可迭代对象的解包用法,Python3可用:In:a
本文实例为大家分享了python使用生成器实现可迭代对象的具体代码,供大家参考,具体内容如下案例分析:实一个可迭代对象的类,它能迭代出给定范围内所有的素数:pn
迭代器(Iterable):能直接作用于for循环的对象,统称可迭代对象。例如:list、tuple、set、str、generator都是可迭代对象。1、如何
for循环语句的对象是可迭代对象,可迭代对象需要实现__iter__或iter方法,并返回一个迭代器,什么是迭代器呢?迭代器只需要实现__next__或next