在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)
这非常有效,因为你无论如何都必须在列表中进行一次传递,这只能传递一次.请注意,它是一个生成器,因此如果您需要一次所有值,则需要将其强制转换为列表.
| 归档时间: |
|
| 查看次数: |
3132 次 |
| 最近记录: |