Verschachtelte for-Schleife

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
gerald123
User
Beiträge: 36
Registriert: Donnerstag 10. September 2015, 12:10

Hey,

ich habe Probleme bei folgendem Code:

Code: Alles auswählen

kWert = np.arange(1,5)
iWert = np.arange(0,2,0.5)

for i, kWert in enumerate(kWert):
    for ii, iWert in enumerate(iWert):
        print(kWert, iWert)
Fehler:
TypeError: 'numpy.float64' object is not iterable

Vielen Dank und beste Grüße
Benutzeravatar
sparrow
User
Beiträge: 4193
Registriert: Freitag 17. April 2009, 10:28

Es ist unglücklich den Namen des zu iterierenden Objektes in der Schleife zu überschreiben.
nezzcarth
User
Beiträge: 1634
Registriert: Samstag 16. April 2011, 12:47

Wie Sparrow schon schrieb, liegt es an den Variablennamen. Ich würde sogar sagen, dass die insgesamt etwas unglücklich sind.
So ist es vielleicht schon etwas besser, aber falls möglich, würde ich versuchen, für die Werte inhaltsbezogene Namen zu wählen:

Code: Alles auswählen

values_1 = np.arange(1,5)
values_2 = np.arange(0,2,0.5)
 
for i, value_1  in enumerate(values_1):
    for j, value_2 in enumerate(values_2):
        print(value_1, value_2)
gerald123
User
Beiträge: 36
Registriert: Donnerstag 10. September 2015, 12:10

:idea: viele Dank!!!
Benutzeravatar
bwbg
User
Beiträge: 407
Registriert: Mittwoch 23. Januar 2008, 13:35

Alternativ:

Code: Alles auswählen

xs = [1, 2, 3, 4]
ys = [0.5, 1.0, 1.5, 2.0]

#for a, b in itertools.product(xs, ys):
#    print(a, b)
for x, y in itertools.product(xs, ys):
    print(x, y)
Edit: Siehe Anmerkung Folgebeitrag
Zuletzt geändert von bwbg am Montag 21. September 2015, 18:33, insgesamt 1-mal geändert.
"Du bist der Messias! Und ich muss es wissen, denn ich bin schon einigen gefolgt!"
nezzcarth
User
Beiträge: 1634
Registriert: Samstag 16. April 2011, 12:47

@bwbg: Würde man bei der Verwendung von xs/ys für die einzelnen Werte der Konsistenz halber statt a und b nicht eher x und y wählen? So hatte ich diese Nomenklatur bisher verstanden.
Antworten