Python高级特性-迭代器和生成器
迭代器
Python中可迭代对象(iterable)通俗指可直接作用与For循环的数据对象,如Python中的集合数据类型,字符串(str),列表(list),元组(tuple),集合(set),字典(dictionary)。
而迭代器(iterator)不仅是可迭代对象,而且可以被next()函数调用并不断返回下个值。
迭代器生成
通过iter()函数生成迭代器对象
iter1 = iter([1,2,3,4]) print(iter1) output:<list_iterator object at 0x10d0de0b8> #生成列表的迭代器对象 next(iter1) output:1 #通过next()函数调用迭代器 #通过for循环调用迭代器 for i in iter1: print(i) output:2 3 4
生成器
不用创建完整的list,在Python中,一边循环一边计算的机制,成为生成器。
创建生成器(通过元组列表推导式)
g = (i*i for i in range(5)) print(g) output: <generator object <genexpr> at 0x10d09deb8> g.next() output:1 #通过next()方法调用生成器 for i in g: #通过for循环的方式调用生成器 print(i) output:4 9 16
创建生成器(通过函数中yield关键字)
def seq(max):
x = 1
d = 2
while x < max:
yield(x)
x += d
seq(20) output:<> <generator object seq> #通过yield关键字创建了生成器对象
next(seq(5)) output:1
2020-03-18 16:00