Суммируйте одно число для каждого элемента в списке (или массиве) в Python - PullRequest
33 голосов
/ 22 апреля 2011

Здесь я снова отвечу на мои основные вопросы, но, пожалуйста, потерпите меня.

В Matlab довольно просто добавить число к элементам в списке:

a = [1,1,1,1,1]
b = a + 1

b, тогда [2,2,2,2,2]

В python это, похоже, не работает, по крайней мере, в списке.

Существует ли простой быстрый способ добавить одно число ко всему списку.

Спасибо

Ответы [ 5 ]

51 голосов
/ 22 апреля 2011

, если вы хотите работать со списком чисел, лучше использовать массивы NumPy:

import numpy
a = [1, 1, 1 ,1, 1]
ar = numpy.array(a)
print ar + 2

дает

[3, 3, 3, 3, 3]
24 голосов
/ 22 апреля 2011

с использованием списка понимания:

>>> L = [1]*5
>>> [x+1 for x in L]
[2, 2, 2, 2, 2]
>>> 

, что примерно соответствует использованию цикла for:

>>> newL = []
>>> for x in L:
...     newL+=[x+1]
... 
>>> newL
[2, 2, 2, 2, 2]

или используя карту:

>>> map(lambda x:x+1, L)
[2, 2, 2, 2, 2]
>>> 
1 голос
/ 26 августа 2016

Вы также можете использовать карту:

a = [1, 1, 1, 1, 1]
b = 1
list(map(lambda x: x + b, a))

Это дает:

[2, 2, 2, 2, 2]
1 голос
/ 22 апреля 2011

Если вам не нужны списки:

a = [1,1,1,1,1]
b = []
for i in a:
    b.append(i+1)
0 голосов
/ 17 ноября 2018

попробуйте это.(Я изменил пример с целью сделать его нетривиальным)

import operator
import numpy as np

n=10
a = list(range(n))
a1 = [1]*len(a)
an = np.array(a)

operator.add почти в два раза быстрее

%timeit map(operator.add, a, a1)

, чем добавление с помощью numpy

%timeit an+1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...