4

给出列表 a, b

a = [5, 8, 9]
b = [6, 1, 0]

我想创建一个生成器,这样:

for x in gen:
  print x

输出

5, 8, 9, 6, 1, 0
4

3 回答 3

6

你可以使用itertools.chain

>>> from itertools import chain
>>> a = [5, 8, 9]
>>> b = [6, 1, 0]
>>> it=chain(a,b)
>>> for x in it:
    print x,
...     
5 8 9 6 1 0
于 2013-05-02T19:41:47.363 回答
3
def chain(*args):
    for arg in args:
        for item in arg:
            yield item

a = [5, 8, 9]
b = [6, 1, 0]
for x in chain(a,b):
    print x,

print ', '.join(map(str,chain(a,b)))
于 2013-05-02T21:13:23.993 回答
2

您可以将生成器表达式用于可笑的 Pythonic 和优雅的单线:

>>> a=[5,8,9]
>>> b=[6,1,0]
>>> g=(i for i in a+b)

测试:

>>> for i in g:
       print i

5
8
9
6
1
0

或测试 #2,如果您真的更喜欢在每个项目之间使用逗号,:

>>> print ', '.join(map(str,g))

5, 8, 9, 6, 1, 0
于 2013-05-02T23:23:31.817 回答