Seite 1 von 1
Rechenoperationen mit einzelnen Listenelementen (float)
Verfasst: Montag 2. November 2020, 23:40
von Tuple.Turtle
Ahoi, hier eine kleine Anfängerfrage.
Für eine Umrechenaufgabe bietet es sich an, ein kleines Programm in Python zu schreiben. Im Wesentlichen soll
y=1240/x für verschiedene x-Werte berechnet werden, die ich vorher in einer Liste definiere.
Meine Frage: Wie kann ich Python sagen, dass es für die einzelnen Elemente die oben definierte Aktion (y=1240/x) durchführen soll, ohne die Zahl jedes Mal eingeben oder durch Positionen definieren zu müssen?
Der konkrete Code (habe hier der Einfachheit halber nur 3 x-Werte angegeben):
Code: Alles auswählen
while True:
x=[9.394199,17.96439,39.7233,59.57]
x=float
z=tuple(x)
y=1240/z
print(y)
break
Der Fehler liegt laut Python bei z=tuple(x) :
'type' object is not iterable
Wie man tuple benutzt ist mir noch nicht klar, split funktioniert meines Wissens nach nur für strings...? Ich bin mir jedenfalls mit dem Code insgesamt sehr unsicher, vielleicht kann mir jemand weiterhelfen.
Danke schon einmal im Voraus. ^^
Re: Rechenoperationen mit einzelnen Listenelementen (float)
Verfasst: Dienstag 3. November 2020, 00:00
von Sirius3
Wenn man etwas für mehrere Werte machen will, braucht man eine Schleife, also hier eine for-Schleife:
Code: Alles auswählen
x = [9.394199,17.96439,39.7233,59.57]
for z in x:
y = 1240 / z
print(y)
Re: Rechenoperationen mit einzelnen Listenelementen (float)
Verfasst: Dienstag 3. November 2020, 12:22
von DeaD_EyE
Das ist dasselbe wie:
Das kann nicht funktionieren und es ergibt auch keinen Sinn.
Die Fehlermeldung weist darauf hin, dass du über ein Type iterieren willst, was nicht geht.
list, tuple, dict, set... usw sind alles Typen.
Berechnung durchführen und am Ende die neue Liste ausgeben:
Code: Alles auswählen
values = [9.394199, 17.96439, 39.7233, 59.57]
results = []
for value in values:
result = 1240 / value
results.append(result)
print(results)
PS: Nach dem Komma an ein Leerzeichen denken. Ansonsten schleichen sich schnell Fehler ein (z.B. Punkt mit Komma verwechselt).
Re: Rechenoperationen mit einzelnen Listenelementen (float)
Verfasst: Dienstag 3. November 2020, 15:32
von tonikae
Wenn es dir nichts ausmacht die alte Zahlenliste zu überschreiben, geht es auch so:
Code: Alles auswählen
liste=[9.394199,17.96439,39.7233,59.57]
print("Alte Liste: ",liste)
for (index, value) in enumerate(liste):
liste[index]=1240/value
print("Neue Liste: ", liste)
Re: Rechenoperationen mit einzelnen Listenelementen (float)
Verfasst: Dienstag 3. November 2020, 16:54
von Sirius3
@tonikae: In Python überschreibt man keine Listen, sondern erzeugt neue. Das sollte man sich erst gar nicht angewöhnen.
Dazu kann man dann DEad_Eyes Code auch noch kompakter schreiben:
Code: Alles auswählen
values = [9.394199, 17.96439, 39.7233, 59.57]
results = [1240 / value for value in values]
Re: Rechenoperationen mit einzelnen Listenelementen (float)
Verfasst: Mittwoch 4. November 2020, 18:54
von Tuple.Turtle
Danke für die vielen Antworten! ^^
@DeaD_EyE: Du hast recht. x)
@Sirius3: Ach ja wie dumm...natürlich nimmt man eine for-Schleife. Danke für die Erklärungen. :3
@tonikae: Das kann man auch machen, wenn man die Werte nochmal in einer Liste sehen möchte. Laut Sirius3 ist das wohl nicht so sinnvoll fürs Programmieren aber ich danke dir auch für deinen Kommentar. ^^
Re: Rechenoperationen mit einzelnen Listenelementen (float)
Verfasst: Freitag 6. November 2020, 11:22
von Zwangsgestörter
Moin,
spricht bei so was dagegen numpy zu verwenden? dann wird das Ganze zu einem einfachen
Code: Alles auswählen
import numpy as np
liste=np.array([9.394199,17.96439,39.7233,59.57])
ergebnis = 1240 / liste
Re: Rechenoperationen mit einzelnen Listenelementen (float)
Verfasst: Freitag 6. November 2020, 13:58
von /me
Zwangsgestörter hat geschrieben: ↑Freitag 6. November 2020, 11:22
spricht bei so was dagegen numpy zu verwenden?
Für mich persönlich spricht dagegen, dass ich nicht für jeden Kleinkram eine neue Abhängigkeit ins Programm bringen möchte. Wenn es denn ein merklichen Performanceunterschied ausmachen würde und der auch noch relevant wäre, dann würde ich darüber nachdenken.
Re: Rechenoperationen mit einzelnen Listenelementen (float)
Verfasst: Freitag 6. November 2020, 14:05
von kbr
Wenn die Liste Millionen von Einträgen hat und Python damit gefühlt (und auch gemessen(!)) zu langsam läuft, dann lohnt sich der Einsatz von numpy. Insbesondere, wenn man mit dem Array anschließend noch was anderes machen möchte.
Das Erzeugen eines Arrays und die Konvertierung zurück zu Python Datentypen kostet auch etwas Zeit. Daher ist die Verwendung von numpy nicht immer sinnvoll, wie sich bei dem vorliegenden Beispiel leicht herausfinden lässt (z.B. mit timeit).
Re: Rechenoperationen mit einzelnen Listenelementen (float)
Verfasst: Montag 9. November 2020, 13:32
von DeaD_EyE
Zwangsgestörter hat geschrieben: ↑Freitag 6. November 2020, 11:22
spricht bei so was dagegen numpy zu verwenden? dann wird das Ganze zu einem einfachen
Ganz einfach: Der Anfänger lernt dann nicht wie z.B. for-schleifen funktionieren oder was eine list-comprehension ist. Der Anfänger kann das dann nur mit numpy und ist dann ohne numpy aufgeschmissen.
Ist das gleiche wie mit pandas. Jeder meint er müsse den kurzen Weg gehen, scheitert aber schon an den Basics, um z.B. eine Spalte in einen anderen Datentyp umzuwandeln.
Ich nutze auch oft numpy, um mir Schreibarbeit zu ersparen. Aber wenn ich den Code eingebe, habe ich parallel ein Bild davon im Kopf, wie man das nur mit Python machen würde.
Das fehlt den Anfängern, also sollten sie sich erst mal mit Python selbst beschäftigen, anstatt haufenweise Frameworks zu erlernen, die sich später vielleicht nicht benötigen.