Hallo, ich habe 2 Listen
zB
a = [1,2,3,4,5]
b = [6,7,8,9,10]
jetzt will ich eine dritte Liste erstellen, die die Summe von jeweils a+b enthält, also zB
c = [7,9,11,13,15]
Kann ich das irgendwie mit for etc. machen, zB
for a,b in zip[a,b] ...
Danke schon mal!
Summenvektor
Wenn du größere Listen verarbeitest, wäre die Bibliothek numpy interessant, weil schneller.
Hier mal ein Vergleich, bei zwei Listen mit je 1Mio Elementen hast du einen Speedfaktor >50
selbst bei nur 100 Elementen einen Faktor >20
def add_liste_pythonic():
summe = [sum(paar) for paar in zip(liste1, liste2)]
liste1 = [1 for _ in range(100)]
liste2 = [2 for _ in range(100)]
%timeit add_liste_pythonic() --> 30.2 µs ± 259 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)
liste1 = [1 for _ in range(1_000_000)]
liste2 = [2 for _ in range(1_000_000)]
%timeit add_liste_pythonic() --> 343 ms ± 5.97 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
import numpy as np
def add_liste_numpy():
summe = np_liste1 + np_liste2
np_liste1 = np.ones(100)
np_liste2 = np.ones(100)
%timeit add_liste_numpy() --> 1.41 µs ± 17.5 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
np_liste1 = np.ones(1_000_000)
np_liste2 = np.ones(1_000_000)
%timeit add_liste_numpy() --> 6.4 ms ± 215 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
Hier mal ein Vergleich, bei zwei Listen mit je 1Mio Elementen hast du einen Speedfaktor >50
selbst bei nur 100 Elementen einen Faktor >20
def add_liste_pythonic():
summe = [sum(paar) for paar in zip(liste1, liste2)]
liste1 = [1 for _ in range(100)]
liste2 = [2 for _ in range(100)]
%timeit add_liste_pythonic() --> 30.2 µs ± 259 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)
liste1 = [1 for _ in range(1_000_000)]
liste2 = [2 for _ in range(1_000_000)]
%timeit add_liste_pythonic() --> 343 ms ± 5.97 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
import numpy as np
def add_liste_numpy():
summe = np_liste1 + np_liste2
np_liste1 = np.ones(100)
np_liste2 = np.ones(100)
%timeit add_liste_numpy() --> 1.41 µs ± 17.5 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
np_liste1 = np.ones(1_000_000)
np_liste2 = np.ones(1_000_000)
%timeit add_liste_numpy() --> 6.4 ms ± 215 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
Alternativ ginge noch folgendes:
Wobei c in Python2 eine Liste und in Python3 ein Generator ist.
Code: Alles auswählen
c = map(operator.add, a, b)
"Du bist der Messias! Und ich muss es wissen, denn ich bin schon einigen gefolgt!"