gpt4 book ai didi

Python:每次出现其他项目时,都会在列表中插入一个项目

转载 作者:行者123 更新时间:2023-12-02 19:23:38 25 4
gpt4 key购买 nike

通过一个过程,我希望得到一系列包含字符串的列表。其中一些字符串将包含一个名为“foo”的子字符串。在所有这些位置,我想在此之前插入另一个字符串项“bar”。

如果

list1 = ['alpha', 'beta', 'gamma' , 'Donald-foo' , 'omega', 'foo Obama', 'football']

我想创建 list2

list2 = ['alpha', 'beta', 'gamma' , 'bar', 'Donald-foo' , 'omega', 'bar', 'foo Obama', 'bar', 'football']

到目前为止我已经尝试过:

list3 = [i for i,s in enumerate(list1) if 'foo' in s]

这给了我

list3 = [3, 5, 6]


for k in reversed(list3):
list1.insert(k,'bar')

这可以完成工作,但感觉是一种非常笨拙和痛苦的方法。有更优雅的方法吗?

最佳答案

这会起作用:

[i for s in [*map(lambda x: (['bar', x] if 'foo' in x else [x]), list1)] for i in s]
['alpha',
'beta',
'gamma',
'bar',
'Donald-foo',
'omega',
'bar',
'foo Obama',
'bar',
'football']

对于 list1 中的所有项目,如果找到 'foo',则返回 ['bar', 'item'],或者只是返回['item'] 如果不是。然后我就扁了。这是未展平的部分:

[*map(lambda x: (['bar', x] if 'foo' in x else [x]), list1)]
[['alpha'],
['beta'],
['gamma'],
['bar', 'Donald-foo'],
['omega'],
['bar', 'foo Obama'],
['bar', 'football']]

关于Python:每次出现其他项目时,都会在列表中插入一个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62698068/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com