在满足条件的两个相邻列表元素之间插入元素

Mic*_*bus 3 python

在python中,在满足条件的任何两个元素之间插入元素的干净方法是什么?

像这样的电话:

insert_between([1,2,3,4,7,8,9,15,16], 0, lambda x,y: x + 1 != y)
Run Code Online (Sandbox Code Playgroud)

应该产生:

[1,2,3,4,0,7,8,9,0,15,16]
Run Code Online (Sandbox Code Playgroud)

有没有比迭代和附加到第二个列表更好的方法?

Kat*_*iel 10

>>> def insert_between(iterable, fill, cond):
...     iterable = iter(iterable)
...     prev = next(iterable)
...     yield prev
...     for cur in iterable:
...             if cond(prev, cur):
...                     yield fill
...             yield cur
...             prev = cur
...
>>>
>>> list(insert_between([1,2,3,4,7,8,9,15,16], 0, lambda x,y: x + 1 != y))
[1, 2, 3, 4, 0, 7, 8, 9, 0, 15, 16]
Run Code Online (Sandbox Code Playgroud)

这非常有效,因为你无论如何都必须在列表中进行一次传递,这只能传递一次.请注意,它是一个生成器,因此如果您需要一次所有值,则需要将其强制转换为列表.