поиск и замена элементов в списке (python)

Мне нужно выполнить поиск по списку и заменить все вхождения одного элемента на другой. Пока мои попытки кода не дают мне нигде, что это лучший способ сделать это?

Например, предположим, что мой список имеет следующие целые числа

>>> a = [1,2,3,4,5,1,2,3,4,5,1] 

и мне нужно заменить все вхождения числа 1 на значение 10, поэтому мне нужен вывод

 >>> a = [10, 2, 3, 4, 5, 10, 2, 3, 4, 5, 10] 

Таким образом, моя цель – заменить все экземпляры номера 1 номером 10.

6 Solutions collect form web for “поиск и замена элементов в списке (python)”

 >>> a=[1,2,3,4,5,1,2,3,4,5,1] >>> for n,i in enumerate(a): ... if i==1: ... a[n]=10 ... >>> a [10, 2, 3, 4, 5, 10, 2, 3, 4, 5, 10] 

Попробуйте использовать понимание списка и тернарный оператор .

 >>> a=[1,2,3,1,3,2,1,1] >>> [4 if x==1 else x for x in a] [4, 2, 3, 4, 3, 2, 4, 4] 

Учет списка хорошо работает – и цикл с перечислением может сэкономить вам некоторую память (b / c операция, по существу, выполняется).

Там также функциональное программирование … см. Использование карты :

     >>> a = [1,2,3,2,3,4,3,5,6,6,5,4,5,4,3,4,3,2,1]
     >>> map (lambda x: x, если x! = 4 else 'sss', a)
     [1, 2, 3, 2, 3, 'sss', 3, 5, 6, 6, 5, 'sss', 5, 'sss', 3, 'sss', 3, 2, 1]
 >>> a=[1,2,3,4,5,1,2,3,4,5,1] >>> item_to_replace = 1 >>> replacement_value = 6 >>> indices_to_replace = [i for i,x in enumerate(a) if x==item_to_replace] >>> indices_to_replace [0, 5, 10] >>> for i in indices_to_replace: ... a[i] = replacement_value ... >>> a [6, 2, 3, 4, 5, 6, 2, 3, 4, 5, 6] >>> 

Если у вас есть несколько значений для замены, вы также можете использовать словарь:

 a = [1, 2, 3, 4, 1, 5, 3, 2, 6, 1, 1] dic = {1:10, 2:20, 3:'foo'} print([dic[n] if n in dic else n for n in a]) > [10, 20, 'foo', 4, 10, 5, 'foo', 20, 6, 10, 10] 

Следующее – очень прямой метод в Python 2.x

  a = [1,2,3,4,5,1,2,3,4,5,1] #Replacing every 1 with 10 for i in xrange(len(a)): if a[i] == 1: a[i] = 10 print a 

Этот метод работает. Комментарии приветствуются. Надеюсь, поможет 🙂

Также попробуйте понять, как работают решения outis и damzam . Список компрессий и лямбда-функция – полезные инструменты.

  • Как вы можете получить дерево вызовов с помощью профилировщиков python?
  • Python -Интеграция нескольких списков?
  • Как удалить элемент из списка кортежей, если второй элемент в каждом кортеже является дубликатом?
  • ValueError: max () arg - пустая последовательность
  • return vs print list
  • Получите уникальные комбинации элементов из списка python
  • Как выполнить замену на месте всех вхождений элемента в список в python?
  • Итерация по неизвестному числу вложенных циклов в python
  •  
    Interesting Posts for Van-Lav

    Разбор строки многочастных данных

    объединение файлов на основе координат столбца двух файлов в python

    Пытается использовать многопроцессорность для заполнения массива в python

    python matplotlib colorbar установка отметчика тикатора / локатора изменения метки метки

    Повторная выборка данных по часам и дате

    демона сельдерея – разрешено в файле журнала

    Модель тестирования Django с ImageField

    Есть ли переключатель для игнорирования неопределенных префиксов пространства имен в LXML?

    Как написать несколько операторов try в одном блоке в python?

    Как запустить оболочку django из Emacs?

    Метод PIL open () не работает с BytesIO

    После создания файла exe python с помощью cx_freeze файл ничего не делает

    Есть ли способ перечислить все доступные буквы диска в python?

    Как получить доступ с помощью ctypes к функциям, возвращающим пользовательские типы, закодированные в dll Delphi?

    Учитывает ли cover.py функции и определения классов?

    Python - лучший язык программирования в мире.