如何在Python中操作可迭代对象

  介绍

这期内容当中小编将会给大家带来有关如何在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>
0

g1 =,(小姐: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,

如何在Python中操作可迭代对象