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

标签 python list

通过一个过程,我希望得到一系列包含字符串的列表。其中一些字符串将包含一个名为“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/

相关文章:

python - 如何创建一个自动生成所有字段的 factory_boy 工厂?

Python - 检查列表重复项

c# - 如何将列表和字典作为元素添加到列表中

list - 使用本地和ormap

python - 如何在函数中使用局部变量并返回它?

python - django-haystack more_like_this 什么都不返回

python - 可变长度的 numpy recarray 字符串

python - Pymongo - 拖尾 oplog

python - 将非理想列表格式导出到 Excel

python - 如何将三个列表压缩到一个嵌套的字典中