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


86

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

 a = [49, 51, 53, 56]

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

Ответы:


150

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

a = [x - 13 for x in a]

2
Поставив def minus13(a):строку выше и сделав отступ на один уровень.
Игнасио Васкес-Абрамс,

8
Почему a[:]на lhs вместо того, чтобы просто возвращаться a? Не a[:]создает копию списка?
istruble 07


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])


3

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

for i in range(len(a)):
  a[i] -= 13

4
Решение для понимания списка намного более питонично. Они могут вам понравиться. docs.python.org/tutorial/…
istruble

Кто удалил мой комментарий? - Не вижу смысла считать длину а. Сделать простой расчет.
jaycodez 07

2
Подсчет необходим, если алгоритм должен быть выражен таким образом, чтобы индексная переменная ( i) проходила по всем возможным значениям индекса. Эта индексная переменная необходима для изменения каждого элемента в списке.
Санта,
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.