【问题标题】:Concatenate generator and item连接生成器和项目
【发布时间】:2011-01-27 10:43:13
【问题描述】:

我有一个生成器(数字)和一个值(数字)。我想迭代这些,就好像它们是一个序列一样:

i for i in tuple(my_generator) + (my_value,)

问题是,据我所知,这会创建 3 个元组,只是为了立即丢弃它们,并且还会将“my_generator”中的项目复制一次。

更好的方法是:

def con(seq, item):
    for i in seq:
        yield seq
    yield item

i for i in con(my_generator, my_value)

但我想知道是否可以在没有该函数定义的情况下做到这一点

【问题讨论】:

    标签: python iterator generator list-comprehension


    【解决方案1】:

    itertools.chain 将多个序列视为一个序列。

    所以你可以把它用作:

    import itertools
    
    def my_generator():
        yield 1
        yield 2
    
    for i in itertools.chain(my_generator(), [5]):
        print i
    

    会输出:

    1
    2
    5
    

    【讨论】:

    • python 没有内置生成器,这真是太疯狂了。我理解 finitude 论点,但itertools.chain 也会出现同样的问题,对吧?
    【解决方案2】:

    试试itertools.chain(*iterables)。文档在这里:http://docs.python.org/library/itertools.html#itertools.chain

    【讨论】:

      【解决方案3】:

      【讨论】:

        猜你喜欢
        • 2020-07-18
        • 2014-12-06
        • 2012-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-11-09
        • 2016-12-30
        相关资源
        最近更新 更多