Заменить элемент списком в python
В python, что является лучшим способом заменить элемент в списке элементами из другого списка?
Например, у меня есть:
a = [ 1, 'replace_this', 4 ]
Я хочу заменить replace_this
на [2, 3]
. После замены необходимо:
a = [ 1, 2, 3, 4 ]
Обновить
Конечно, можно делать с нарезкой (извините, что я не писал его в вопросе), но проблема в том, что возможно, что в списке имеется более одного значения replace_this
. В этом случае вам нужно выполнить замену в цикле, и это становится неоптимальным.
Я думаю, что было бы лучше использовать itertools.chain
, но я не уверен.
- Pythonic способ проверить, выполняется ли условие для любого элемента списка
- Python – Средние аналогичные значения в списке и создание нового списка с усредненными значениями
- Добавить элемент в указанный список в списке списков (Python)
- Как создать несколько (но отдельных) пустых списков в Python?
- Как создать список всех возможных списков, удовлетворяющих определенному условию?
Вы можете просто нарезать:
>>> a = [ 1, 'replace_this', 4 ] >>> a[1:2] = [2, 3] >>> a [1, 2, 3, 4]
И как указывает @mgilson – если вы не знаете, какую позицию заменить, то вы можете использовать a.index
чтобы найти его … (см. Его комментарий)
обновление, связанное с невозможностью использования нарезки
Используя itertools.chain
, убедитесь, что у replacements
есть итерации:
from itertools import chain replacements = { 'replace_this': [2, 3], 4: [7, 8, 9] } a = [ 1, 'replace_this', 4 ] print list(chain.from_iterable(replacements.get(el, [el]) for el in a)) # [1, 2, 3, 7, 8, 9]
Я бы пошел с генератором, чтобы заменить элементы, и еще один генератор, чтобы сгладить его. Предполагая, что у вас есть рабочий flatten
генератор, такой, что в приведенной ссылке:
def replace(iterable, replacements): for element in iterable: try: yield replacements[element] except KeyError: yield element replac_dict = { 'replace_this': [2, 3], 1: [-10, -9, -8] } flatten(replace(a, replac_dict)) # Or if you want a list #list(flatten(replace(a, replac_dict)))
- Понимание родителя и контроллера в Tkinter __init__
- Сжатие нескольких сжатых потоков данных zlib в один поток эффективно
- Проверка наличия списка списков с одинаковыми размерами
- проблема с удалением элемента из списка в python
- Удалить элемент из списка в Python, итерации по нему
- Pythonic способ добавить список векторов
- Python. Список списков
- Печатать элемент из списка в кусках 50 в Python
- Как найти индекс элемента с самым коротким списком внутри?
- Заменить один элемент в строке одним элементом из списка
- Распечатайте два символа символов, найденных в списке python.