本文实例讲述了python可迭代对象。分享给大家供大家参考,具体如下:
1、列表生成式
1
2
3
4
5
|
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
1
2
3
|
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。
1
2
3
4
|
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的包
1
2
3
4
5
6
7
8
9
10
11
|
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对象。
注意:可迭代对象不一定是迭代器,但是迭代器一定是迭代对象。
可迭代对象与迭代器的关系:
可迭代对象包含迭代器
1
2
3
4
5
6
7
8
9
10
11
|
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对象。
1
2
3
4
5
6
7
|
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程序设计有所帮助。
原文链接:https://blog.csdn.net/lm_is_dc/article/details/80077471