欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Python可迭代对象操作示例

程序员文章站 2023-08-15 10:53:59
本文实例讲述了python可迭代对象。分享给大家供大家参考,具体如下: 1、列表生成式 list = [result for x in range(m, n)]...

本文实例讲述了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

g1 = (i for i in range(11))
list1 = [i for i in g1]
print(list1)

输出:

[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 iterable
print(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 iterator
print(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 iterator
list1 = [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程序设计有所帮助。