[python] Einträge in Listen subtrahieren

oyster-manu

oyster-manu

toast
Hallo,

ich will eine recht einfache Formel in Python umsetzen:

delta T = t_(n+1) - t_(n)

(Es soll die Differenz zwischen n+1-ten und n-ten Wert gebildet werden)

In einer Liste sind Messwerte gespeichert mit denen ich die Formel füttern will. Das Ergebnis soll dann auch wieder als Liste gespeichert werden.
Code:
liste1 = [10, 12, 15, 19]
liste2 = []

for eintrag in liste1[1:]:
    liste2[eintrag] = liste1[1:len(liste1)] - liste1[0:-1]

print "liste 2", liste2

Ich erhalte dabei aber immer den Fehler:
Code:
Traceback (most recent call last):
  File "/home/manu/mu.py", line 5, in <module>
    liste2[eintrag] = liste1[1:len(liste1)] - liste1[0:-1]
[b]TypeError: unsupported operand type(s) for -: 'list' and 'list'[/b]

Wie kann ich Einträge von Listen subtrahieren?
 
Zuletzt bearbeitet:
Du subtrahierst gerade zwei Listen voneinander. Was Du willst ist folgendes:
Code:
liste1 = ...
liste2 = []
for i in range(0, len(liste1) - 1):
   liste2.append(liste1[i+1] - liste1[i])
Geht vielleicht auch noch über fiese Benutzung von map, aber das ist ja keine Perl-Frage :-)
 
Danke für deine Hilfe.

Ich habe aber inzwischen einen eleganteren Weg gefunden: NumPy. Das bringt ein paar neue Datentypen, wie den Array mit. NumPy-Arrays werden dann standardmäßig Element für Element verrechnet. Man spart sich quasi die for-Schleife.
 
geht auch in Standard-python ohne for:
Code:
map(lambda x,y: (y and y-x) or x, liste, liste[1:])[:-1]
;-)
 
Sieht auch nicht schlecht aus. Meine Daten sind aber schon alle Numpy-Arrays.
 

Ähnliche Themen

pythonproblem

[python] Liste ab 2. Eintrag ausgeben

Liste sortieren: index out of range

update-manager -d geht nicht !

Probleme bei erster Gentoo Installation

Zurück
Oben