Python的迭代和生成器

迭代:

list有下标,可以进行迭代,但是只要是可迭代对象,无论有无下标,都是可以进行迭代的

1 :

比如 dict就可以进行迭代:

d = {'d'=:1, 'b'=2}

for key in d:

print key

由于dict的存储不是按照list的方法顺序排列的,所以,迭代出来的结果顺序很可能不一样。

默认情况下,dict迭代的是key,如果要迭代value,可以用 for value in d.itervalues(),如果要同时迭代key和value可以用for k,v in d.iteritems()

2:由于字符串也是可迭代对象,因此也是可以用作for循环的

3:如何判断对象是一个可迭代对象?使用collection模块中的iterable类型

比如:

from collection import iterable 

isinstance('abc',Iterable)

返回:True

isinstance (123,Iterable)

返回: False

生成器:

列表生成,由于受到内存限制,列表容量有限,我们可以通过某种算法来推出列表元素,而不用创建完整的list

这种机制就叫做生成器(generator)

创建generator的方法:
1,将列表生成式的[]改为()

L=[x*x for x in range(10)]

改为:g = (x*x for x in range(10))

打印generator :

g = (x*x for x in range(10))

for n in g:

print n


2,将函数内的print改为yield,如果一个函数定义中包含yield关键字,那么这个函数就不是一个普通函数而是一个generator

3,generator与普通函数的执行流程不同:函数时顺序执行,遇到return或者最后一行函数语句就返回,而generator是遇到yield就返回,再次执行就从上次返回的yield语句处继续执行






你可能感兴趣的:(Python)