Seite 1 von 1

Verschachtelte for-Schleife

Verfasst: Montag 21. September 2015, 14:19
von gerald123
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

Re: Verschachtelte for-Schleife

Verfasst: Montag 21. September 2015, 14:33
von sparrow
Es ist unglücklich den Namen des zu iterierenden Objektes in der Schleife zu überschreiben.

Re: Verschachtelte for-Schleife

Verfasst: Montag 21. September 2015, 14:38
von nezzcarth
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)

Re: Verschachtelte for-Schleife

Verfasst: Montag 21. September 2015, 14:56
von gerald123
:idea: viele Dank!!!

Re: Verschachtelte for-Schleife

Verfasst: Montag 21. September 2015, 16:55
von bwbg
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

Re: Verschachtelte for-Schleife

Verfasst: Montag 21. September 2015, 17:06
von nezzcarth
@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.