Python 搜索列表中的元素并将其替换为多个项目

Python 搜索列表中的元素并将其替换为多个项目,python,Python,通过给定列表搜索元素b替换它并插入多个项目b1、b2、b3的python方法是什么,以便列表最终使用切片表示法显示为['a',b1',b2',b3',c']: >>> lst = ['a', 'b', 'c'] >>> i = lst.index('b') # This raises ValueError if there's no 'b' in the list. >>> lst[i:i+1] = 'b1', 'b2', 'b3' >

通过给定列表搜索元素
b
替换它并插入多个项目
b1、b2、b3
的python方法是什么,以便列表最终使用切片表示法显示为
['a',b1',b2',b3',c']

>>> lst = ['a', 'b', 'c']
>>> i = lst.index('b') # This raises ValueError if there's no 'b' in the list.
>>> lst[i:i+1] = 'b1', 'b2', 'b3'
>>> lst
['a', 'b1', 'b2', 'b3', 'c']

注意这仅更改第一个匹配项。

替代方法:使用


如果
b
不止一次出现,会发生什么?在我的特殊情况下,它保证项目是唯一的为了支持一般情况,单个元素必须是可移植的:
…否则[x]在a
中为x。试试
a=['aaa','b','ccc']
,你就会明白为什么@thg435建议
[x]
。(顺便说一句,字符串对象是可编辑的。)@SteveP.,请参阅。@SteveP.,因为带有切片对象参数的
列表。\uu_setitem_uu_u_u_u_uu就是这样实现的。看,谢谢,这就是我要找的。
>>> b = ["b1", "b2", "b3"]
>>> a = ['a', 'b', 'c']
>>> a = [b if x=='b' else [x] for x in a] 
>>> a
['a', ['b1', 'b2', 'b3'], 'c']
>>> import itertools
>>> list(itertools.chain.from_iterable(a))
['a', 'b1', 'b2', 'b3', 'c']
>>>