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