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
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]
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]
>>>
Wenn Sie kein Listenverständnis wünschen:
a = [1,1,1,1,1]
b = []
for i in a:
b.append(i+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
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]