Seite 1 von 1
Summenvektor
Verfasst: Dienstag 15. Mai 2018, 08:04
von Topho_8
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!
Re: Summenvektor
Verfasst: Dienstag 15. Mai 2018, 08:31
von eckhard
@Topho_8
Zum Beispiel mit einer List Comprehension:
[sum(w) for w in zip(a,b)]
Eckhard
Re: Summenvektor
Verfasst: Dienstag 15. Mai 2018, 08:49
von Topho_8
wow, Vielen Dank!
Re: Summenvektor
Verfasst: Dienstag 15. Mai 2018, 10:25
von ThomasL
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)
Re: Summenvektor
Verfasst: Dienstag 15. Mai 2018, 11:43
von bwbg
Alternativ ginge noch folgendes:
Wobei c in Python2 eine Liste und in Python3 ein Generator ist.