【发布时间】:2020-03-05 17:51:59
【问题描述】:
我正在尝试将一个值插入到一个列表中。
interleave(1, ['A', 'B', 'C']) -> [1, 'A', 1, 'B', 1, 'C']
有很多方法可以解决这个问题,但我认为more_itertools.interleave 是最易读的。然而,要使用这个函数,我需要创建一个生成器,它永远产生1。显然这可以用
def gen1():
while True:
yield 1
但这感觉比必要的复杂。
有没有一种优雅的方法来替换下面 sn-p 中的... 来创建一个内联生成器,这样
res = more_itertools.interleave(..., ['A', 'B', 'C'])
assert list(res) == [1, 'A', 1, 'B', 1, 'C']
... = (1 for _ in ['A', 'B', 'C']) 显然有效,但我不会称之为优雅。
【问题讨论】:
-
那个生成器不会永远产生 1... 它产生 1 一次... 无论如何,你想要
itertools.repeat(1)
标签: python python-3.x generator