Summenvektor

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Topho_8
User
Beiträge: 2
Registriert: Dienstag 15. Mai 2018, 07:57

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!
eckhard
User
Beiträge: 33
Registriert: Montag 14. Dezember 2015, 10:06
Wohnort: Karlsruhe

@Topho_8
Zum Beispiel mit einer List Comprehension:

[sum(w) for w in zip(a,b)]

Eckhard
Topho_8
User
Beiträge: 2
Registriert: Dienstag 15. Mai 2018, 07:57

wow, Vielen Dank!
Benutzeravatar
ThomasL
User
Beiträge: 1366
Registriert: Montag 14. Mai 2018, 14:44
Wohnort: Kreis Unna NRW

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)
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
Benutzeravatar
bwbg
User
Beiträge: 407
Registriert: Mittwoch 23. Januar 2008, 13:35

Alternativ ginge noch folgendes:

Code: Alles auswählen

c = map(operator.add, a, b)
Wobei c in Python2 eine Liste und in Python3 ein Generator ist.
"Du bist der Messias! Und ich muss es wissen, denn ich bin schon einigen gefolgt!"
Antworten