这期内容当中小编将会给大家带来有关如何在Python中操作可迭代对象,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
<强> 1,列表生成式强>
list =, (result for  x 拷贝范围(m, n)) g1 =,(小姐:for 小姐:拷贝范围(101)) print(类型(g1)) 打印(g1) print (g1.__next__ ())
输出:
& lt;类& # 39;发电机# 39;在
引用>
& lt;发电机对象& lt; genexpr>在0 x0000024e6ac08f10>
0g1 =,(小姐:for 小姐:拷贝范围(11)) 时间=list1 [小姐:for 小姐:拷贝g1) 打印(list1)输出:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
引用><强> 2,可迭代对象强>
①。可以直接作用于为循环的对象统称为可迭代对象,我们称之为:迭代器
②。我们可以使用isintance()判断一个对象是否是迭代器对象
③。可以直接作用于为循环的数据类型有以下几种
。集合数据类型:如列表、元组、dict类型,设置和字符串
b。生成器(发电机):就是一个能返回迭代器的函数,其实就是定义一个迭代算法,可以理解为一个特殊的迭代器。<强>生成器:强>
通过列表生成式,我们可以直接创建一个列的表,但是,受到内存限制,列表容量肯定是有限的,如果我们仅仅需要访问前面几个元素,如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的元素呢?这样就不必创建完整的列表,从而节省大量的空间,在Python中,这种一边循环一边计算的机制,称为生成器(发电机)
要创建一个发电机,有很多种方法。第一种方法很简单,只要把一个列表生成式的[]改成(),就创建了一个发电机。
g1 =,(小姐:for 小姐:拷贝范围(11)) 打印(g1) for 小姐:拷贝范围(11): 打印才能(next (g1),结束=& # 39;\ t # 39;)输出:
& lt;发电机对象& lt; genexpr>在0 x00000207f5c69678>
引用>
0,,1,,2,,3,,4,,5,,6,,7,,8,,9,,10,注意:使用迭代器判断的时候需要导入Iterable的包
得到collections import Iterable print (isinstance ([], Iterable)) print (isinstance (Iterable ())) print (isinstance (““, Iterable)) print (isinstance ({}, Iterable)) print (isinstance ({1,2,3}, Iterable)) 打印({1,2,3}) 打印(isinstance (1, Iterable)) 打印(isinstance (1.2, Iterable)) g1 =,(小姐:for 小姐:拷贝范围(101)) print (isinstance (g1, Iterable))输出:
真
引用>
真真正
真
真
{1,2,3}
假
假真正
<强> 3,迭代器强>
迭代器:不但可以作用于为循环,还可以被下一个()函数不断调用并返回下一个值,
直到最后出现抛出StopIteration错误,表示无法返回下一个值
可以被<代码> next() 代码>函数调用并不断返回下一个值的对象称为迭代器(迭代器对象)
可以使用isinstance()函数判断一个对象是否是迭代器对象。
注意:可迭代对象不一定是迭代器,但是迭代器一定是迭代对象。
可迭代对象与迭代器的关系:
可迭代对象包含迭代器
得到collections import 迭代器 print (isinstance([],迭代器)) print (isinstance (Iterator ())) print (isinstance(““,迭代器)) print (isinstance({},迭代器)) print (isinstance({1,2,3},迭代器)) 打印({1,2,3}) 打印(isinstance(1,迭代器)) 打印(isinstance(1.2,迭代器)) g1 =,(小姐:for 小姐:拷贝范围(101)) print (isinstance (g1,迭代器))输出:
假
引用>
假
假
假假
{1,2,3}
假
假真正
<强> 4,迭代器转换强>
可以通过<代码> Iter() 代码>函数将列表、元组、dict,字符串转换为迭代器对象。
得到collections import 迭代器 时间=list1 [小姐:for 小姐:拷贝范围(11)] print (isinstance (list1,迭代器)) 时间=iter1 iter (list1) print (isinstance (iter1,迭代器)) for 小姐:拷贝范围(11): 打印才能(next (iter1),结束=& # 39;\ t # 39;)输出:
假
引用>
真
0,,1,,2,,3,,4,,5,,6,,7,,8,,9,,10,