Искать элемент в списке и заменять его несколькими пунктами - программирование
Подтвердить что ты не робот

Искать элемент в списке и заменять его несколькими пунктами

Что такое pythonic способ поиска по указанному списку ['a', 'b', 'c'] для элемента b заменить его и вставить несколько элементов b1, b2, b3, чтобы список, наконец, читался как ['a', 'b1', 'b2', 'b3', 'c']

4b9b3361

Ответ 1

Использование нотации среза:

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

ПРИМЕЧАНИЕ Это изменяет только первый соответствующий элемент.

Ответ 2

Альтернативный подход: использование 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']
>>>