Перейти к содержимому

Как заменить элемент массива в питоне

  • автор:

Как заменить значения в списке в Python

Часто вас может заинтересовать замена одного или нескольких значений в списке в Python.

К счастью, это легко сделать в Python, и в этом руководстве дается несколько различных примеров того, как это сделать.

Пример 1. Замена одного значения в списке

Следующий синтаксис показывает, как заменить одно значение в списке в Python:

#create list of 4 items **x = ['a', 'b', 'c', 'd'] #replace first item in list **x[ 0 ] = 'z' #view updated list **x ['z', 'b', 'c', 'd'] 

Пример 2. Замена нескольких значений в списке

Следующий синтаксис показывает, как заменить несколько значений в списке в Python:

#create list of 4 items **x = ['a', 'b', 'c', 'd'] #replace first three items in list **x[ 0:3 ] = ['x', 'y', 'z'] #view updated list **x ['x', 'y', 'z', 'd'] 

Пример 3. Замена определенных значений в списке

Следующий синтаксис показывает, как заменить определенные значения в списке в Python:

#create list of 6 items y = [1, 1, 1, 2, 3, 7] #replace 1's with 0's y = [0 if x==1 else x for x in y] #view updated list y [0, 0, 0, 2, 3, 7] 

Вы также можете использовать следующий синтаксис для замены значений, превышающих определенный порог:

#create list of 6 items y = [1, 1, 1, 2, 3, 7] #replace all values above 1 with a '0' y = [0 if x>1 else x for x in y] #view updated list y [1, 1, 1, 0, 0, 0] 

Точно так же вы можете заменить значения, которые меньше или равны некоторому порогу:

#create list of 6 items y = [1, 1, 1, 2, 3, 7] #replace all values less than or equal to 2 a '0' y = [0 if x 

Найдите больше руководств по Python здесь .

Артём Санников

Данная книга является руководством для начинающих специалистов в области анализа и обработки данных. В книге рассматривается язык SQL и его процедурное расширение PL/SQL от компании Oracle.

Главная › Языки программирования › Python › Списки › Изменение элементов в списке Python

Изменение элементов в списке Python

Синтаксис изменения элемента напоминает синтаксис обращения к элементу списка. Чтобы изменить элемент, необходимо написать имя списка, а затем в квадратных скобках указать индекс изменяемого элемента. А затем присвоить новое значение этому элементу.

# Список фамилий пользователей users = ['Иванов', 'Сидоров', 'Петров', 'Иванов'] print(users) # Производим изменение первого элемента в списке users[0] = 'Пупкин' # Выводим измененный список print(users) # Финальный результат в консоли ['Пупкин', 'Сидоров', 'Петров', 'Иванов']

Записи по теме

  • Проверка отсутствия значения в списке Python
  • Проверка вхождения значения в список Python
  • Копирование списка в Python
  • Перебор содержимого среза списка в Python
  • Срез для списка в Python
  • Генератор списков в Python
  • Создание числового списка при помощи range() в Python
  • Перебор всего списка в Python

Замена элемента в списке по его индексу

В результате элемент с индексом i из последовательности sequence получит новое значение (заменится) на объект x .

Если индекс i отрицателен, то индекс будет считаться относительно конца последовательности sequence . В этом случае положительный индекс можно посчитать по формуле len(sequence) - i .

Обратите внимание, что -0 по-прежнему будет 0.

При попытке заменить значение элемента с индексом, превышающим длину последовательности len(sequence) поднимается исключение IndexError .

Эта операция поддерживаются изменяемыми типами последовательностей.

Примеры изменения элемента списка по индексу.

>>> x = [2, 5, 8, 11, 14, 17] >>> x[1] = 150 >>> x # [2, 150, 8, 11, 14, 17] >>> x[-1] = 100 >>> x # [2, 150, 8, 11, 14, 100] x = ['el_1', 'el_2', 'el_3'] >>> x[2] = 'lorem' >>> x # ['el_1', 'el_2', 'lorem'] # замена элемента неизменяемой # последовательности невозможна >>> x[3] = 'foo' # Traceback (most recent call last): # File "", line 1, in # IndexError: list assignment index out of range 

Замена элементов в списке по условию.

Например, имеем числовой список, в котором присутствуют как целые, так и вещественные числа. Необходимо получить тот же список, в котором вещественные числа округлены до целых.

В данном случае можно поступить 2-мя способами: первый - это создать новый пустой список и в цикле for/in добавлять в него значения, округляя все элементы до целого, из первого списка. Недостаток такого способа: если список огромный то столкнемся с не экономным расходом памяти.

Второй подход - это при каждой итерации по списку, проверять тип числа и если это вещественное число то округлять его до целого и на лету изменять значение в списке по его индексу. Недостаток: скорость обработки списка незначительно уменьшиться.

# имеем числовой список lst = [1, 5.5, 3, 8.2, 11.1, 10, 4, 5.6, 9] # используем функцию `enumerate()` # для определения индекса элемента # при каждой итерации for n, i in enumerate(lst, 0): # проверяем тип числа if type(i) == float: # если float, то округляем i = round(i) # изменяем элемент по индексу lst[n] = i >>> lst # [1, 6, 3, 8, 11, 10, 4, 6, 9] 

Замена элементов вложенных списков.

>>> x = [[2, 150], [11, 14, 17]] >>> x[0] = [0, 0] >>> x # [[0, 0], [11, 14, 17]] >>> x[1][1] = 1000 >>> x # [[0, 0], [11, 1000, 17]] >>> x[0][1] = 'foo' >>> x # [[0, 'foo'], [11, 1000, 17]] >>> x[1] = 'replace' >>> x # [[0, 'foo'], 'replace'] 
  • ОБЗОРНАЯ СТРАНИЦА РАЗДЕЛА
  • Изменение/замена элемента списка по индексу
  • Изменение части списка операцией среза
  • Изменение списка срезом c заданным шагом
  • Удаление части списка операцией среза
  • Удаление части списка по срезу с заданным шагом
  • Метод list.append(), добавляет значение в конец списка
  • Метод list.clear(), очищает список
  • Метод list.copy(), копия списка
  • Метод list.extend(), расширяет список другой последовательностью
  • Расширение списка его содержимым
  • Метод list.insert(), вставить элемент по индексу
  • Метод list.pop(), получение с удалением элемент списка
  • Метод list.remove(), удаление элемента списка по значению
  • Метод list.reverse(), разворачивает элементы списка
  • Удаление элемента списка по индексу
  • Удаление дубликатов из списка Python с сохранением очередности

Как изменять элементы списка?

Никак не могу понять, почему при использовании цикла for для списка, если я хочу изменить элемент списка, то измененный элемент не сохраняется. Приходится создавать новые одноразовые переменные, тем самым делая код избыточным. Например:

def accum(s): a = 1 b = [] c = [] for i in s.lower(): b.append(i * a) a += 1 for i in b: i = i.title() c.append(i) return '-'.join(c)

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

  • Вопрос задан более трёх лет назад
  • 7656 просмотров

3 комментария

Простой 3 комментария

kshnkvn

Что хранится в s ?

bimka

bimka @bimka Автор вопроса
в S хранится строка. Например: S = 'qwertyu'

kshnkvn

bimka, и что ты хочешь сделать с этой строкой? зачем итерируешь её посимвольно, умножаешь на единицу и создаешь из нее список? Дай хоть какие-то вводные параметры, а не кусок мешанины из кода.
P.S. Когда обращаешься к кому-то, нажимай кнопку "Ответ".

Решения вопроса 2

kshnkvn

yay ✌️ t.me/kshnkvn

for f in foo: f = 'bla-bla-bla'

f - это всего лишь переменная, которая ссылается на элемент итерируемого объекта. Изменяя значение f ты лишь меняешь на какой элемент она будет ссылаться, а не сам элемент итерируемого объекта.
Если ты хочешь поменять элемент объекта, то делать это нужно (на самом деле не нужно, только если ну очень уж хочется) примерно так:

>>> foo = [1,2,3,4,5,6] >>> for key, value in enumerate(foo): . foo[key] = value * value . >>> foo [1, 4, 9, 16, 25, 36]

Ответ написан более трёх лет назад
Нравится 3 3 комментария
Игорь @Igorello74

Честно говоря, решение похоже на костыль. Хотя мы тут не о философии пришли говорить, но разве такой подход, что нельзя просто указать список в качестве итерируемого объекта для for , не противоречит каким-нибудь принципам философии Python'а, ведь логично было бы, если бы работало?

<. >Если ты хочешь поменять элемент объекта, то делать это нужно (на самом деле не нужно, только если ну очень уж хочется)

— получается, тут не правилен сам подход к решению. Можете пояснить, пожалуйста?

kshnkvn

Честно говоря, решение похоже на костыль.

Нет. for вызывает list.__iter__() который возвращает объект listiterator привязанный к конкретному списку, или итерируемому объекту, соответственно в выражении for f in foo f - это объект итератора, а не списка, соответственно для изменения итерируемого объекта нужно обращаться к нему.

получается, тут не правилен сам подход к решению.

И да и нет. Я написал общий принцип, который объясняет работу итератора, не решающий конкретной задачи. Для конкретных задач есть конкретные инструменты. Мой пример лучше было бы решить так:

foo = [1,2,3,4,5,6] foo = list(map(lambda x:x*x, foo))

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *