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

gre*_*ole 15 python

什么是pythonic方法搜索给定列表['a', 'b', 'c']中的元素b替换它并插入多个项目,b1, b2, b3以便列表最终读取为['a', 'b1', 'b2', 'b3', 'c']

fal*_*tru 20

使用切片表示法:

>>> 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']
Run Code Online (Sandbox Code Playgroud)

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


kar*_*ikr 6

替代方法:使用 itertools.chain.from_iterable

>>> 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']
>>> 
Run Code Online (Sandbox Code Playgroud)

  • 为了支持一般情况,必须使单个元素可迭代:`...else [x] for x in a`。 (4认同)