Вычесть значение из каждого числа в списке в Python?

86

У меня есть список

 a = [49, 51, 53, 56]

Как мне вычесть 13 из каждого целого числа в списке?

jaycodez
источник

Ответы:

150

С пониманием списка :

a = [x - 13 for x in a]
Игнасио Васкес-Абрамс
источник
2
Поставив def minus13(a):строку выше и сделав отступ на один уровень.
Игнасио Васкес-Абрамс,
8
Почему a[:]на lhs вместо того, чтобы просто возвращаться a? Не a[:]создает копию списка?
istruble 07
2
istruble: stackoverflow.com/questions/4081561/…
Игнасио Васкес-Абрамс
4
Что должно быть сделано, так это то, что значение из понимания списка должно быть возвращено функцией, а вызывающий должен решить заменить существующую последовательность, если это необходимо.
Игнасио Васкес-Абрамс,
1
@istruble: с таким же успехом будет работать простое присвоение напрямую a. Так a = [x - 13 for x in a]будет работать точно так же, и это будет менее запутанно.
Леннарт Регебро
71

Если вы много работаете с числами, возможно, вам стоит взглянуть на NumPy . Он позволяет выполнять все виды операций непосредственно с числовыми массивами. Например:

>>> import numpy
>>> array = numpy.array([49, 51, 53, 56])
>>> array - 13
array([36, 38, 40, 43])
шанг
источник
1
Я провел быстрый тест, и он возвращает новый массив, оставляя исходный массив нетронутым.
Francois
10

Вы можете использовать функцию map () :

a = list(map(lambda x: x - 13, a))
спутник
источник
7
@ Frost.baka В Python 3 map возвращает объект карты. В Python 2 он возвращает список.
sputnikus
5

Чтобы прояснить уже опубликованное решение из-за вопросов в комментариях

import numpy

array = numpy.array([49, 51, 53, 56])
array = array - 13

выведет:

массив ([36, 38, 40, 43])

JJ K.
источник
3

Это будет работать:

for i in range(len(a)):
  a[i] -= 13
Оскар Медерос
источник
4
Решение для понимания списка намного более питонично. Они могут вам понравиться. docs.python.org/tutorial/…
istruble
Кто удалил мой комментарий? - Не вижу смысла считать длину а. Сделать простой расчет.
jaycodez 07
2
Подсчет необходим, если алгоритм должен быть выражен таким образом, чтобы индексная переменная ( i) проходила по всем возможным значениям индекса. Эта индексная переменная необходима для изменения каждого элемента в списке.
Санта,