刚学python时看到诸如:
book_name_list=(book.name for book in libary)
都觉得是一种顿悟,今天才知道它的原理yield,带有这个东西的都是generator。这么写简洁流畅、语义通顺,缺点是一直不知道怎么合并,用集合的操作符 | 会报错误:
unsupported operand type(s) for |: 'generator' and 'generator'
然后发现了itertools,这个库的定义太爆了,创建高效的循环,没错就是他。那么多个generator可以这样合起来:
from itertools import chain def generator1(): for item in 'abcdef': yield item def generator2(): for item in '123456': yield item generator3 = chain(generator1(), generator2()) for item in generator3: print item