我正在尝试将值插入列表。
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] 删除。
我来说两句