Python内联生成器

bphi

我正在尝试将值插入列表。

interleave(1, ['A', 'B', 'C']) -> [1, 'A', 1, 'B', 1, 'C']

有很多方法可以解决此问题,但我认为more_itertools.interleave将是最易读的。但是,要使用此功能,我需要创建一个1永久产生的生成器显然,这可以通过

def gen1():
    while True:
        yield 1

但这感觉比必要的要复杂。

有没有一种优雅的方法可以替换...下面的代码片段以创建内联生成器,从而

res = more_itertools.interleave(..., ['A', 'B', 'C'])
assert list(res) == [1, 'A', 1, 'B', 1, 'C']

... = (1 for _ in ['A', 'B', 'C']) 显然有效,但我不会称之为优雅。

帕特里克·豪

itertools.repeat我不知道该如何interleave实现,但是您可以使用chain进行相同的操作zip

from itertools import chain, repeat

print(list(chain.from_iterable(zip(repeat(1), ['A', 'B', 'C']))))
# [1, 'A', 1, 'B', 1, 'C']

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章