web-dev-qa-db-de.com

Addiere eine Zahl zu jedem Element in einer Liste (oder einem Array) in Python

Hier gehe ich mit meinen grundsätzlichen Fragen noch einmal hin, aber bitte ertragen Sie mich.

In Matlab ist es relativ einfach, Elementen in einer Liste eine Nummer hinzuzufügen:

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

b ist dann [2,2,2,2,2]

In Python scheint dies zumindest auf einer Liste nicht zu funktionieren.

Gibt es eine einfache schnelle Möglichkeit, eine einzelne Zahl zur gesamten Liste zu addieren.

Vielen Dank

29
Leon palafox

wenn Sie mit einer Liste von Zahlen arbeiten möchten, sollten Sie NumPy-Arrays verwenden:

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

gibt

[3, 3, 3, 3, 3]
47
joaquin

verwenden von List Comprehension:

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

was sich grob in eine for-Schleife übersetzt:

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

oder mit der Karte:

>>> map(lambda x:x+1, L)
[2, 2, 2, 2, 2]
>>> 
21
DTing

Wenn Sie kein Listenverständnis wünschen: 

a = [1,1,1,1,1]
b = []
for i in a:
    b.append(i+1)
1

versuche dies. (Ich habe das Beispiel geändert, um es nicht trivial zu machen.)

import operator
import numpy as np

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

operator.add ist fast doppelt so schnell

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

als mit numpy hinzuzufügen

%timeit an+1
0
Nikolai Zaitsev

Sie können auch eine Karte verwenden:

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

Es gibt:

[2, 2, 2, 2, 2]