一.迭代器
通过iter()方法获得了list的迭代器对象,然后就可以通过next()方法来访问list中的元素了。当容器中没有可访问的元素后,next()方法将会抛出一个StopIteration异常终止迭代器。
#encoding=utf-9
li=[5,6,7]
it=iter(li)
print it
print it.next()
print it.next()
print it.next()
print it.next() #此次调用会抛异常
举例说明:将列表[1,2,3,4,5,6],生成字典,奇数位为key,偶数位为value
#coding=utf-8
'''
将列表[1,2,3,4,5,6],生成字典,奇数位为key,偶数位为value '''
a = [1,2,3,4,5,6]
b={}
"普通方法"
for i in range(0,len(a),2):
b[a[i]] = a[i+1]
print b
c=iter(a)
d={}
"迭代器"
for i in range(len(a)/2):
key = c.next()
value = c.next()
d[key]=value
print d
二.生成器
如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的元素呢?这样就不必创建完整的list,从而节省大量的空间。在Python中,这种一边循环一边计算的机制,称为生成器(Generator)
代码示例:
L = [x * x for x in range(10)]
print L
g = (x * x for x in range(10))
print g
print g.next()
print g.next()
print g.next()
print g.next()
for n in g:
print n
举例说明; ps:yield 通常和生成器一起使用
代码示例:
def odd():
print 'step 1'
yield 1
print 'step 2'
yield 3
print 'step 3'
yield 5
o = odd()
print o.next()
print o.next()
print o.next()
print o.next()
#for i in o:
# print i #可以遍历执行函数
三.异同