Seite 1 von 1

iterationschritte einer liste

Verfasst: Freitag 17. Juni 2022, 09:29
von MathGenie123
meine frage wäre was genau dieser code macht bzw. wie wird hier iteriert ?

Code: Alles auswählen

attributes_by_class = [[data[:,i][data[:,0] == c]
                        for c in (1,2,3)]
                       for i in range(1,14)]

Re: iterationschritte einer liste

Verfasst: Freitag 17. Juni 2022, 09:39
von __deets__
Das ist eine List-Comprehension, zwei ineinander verschachtelte um genauer zu sein.

Re: iterationschritte einer liste

Verfasst: Freitag 17. Juni 2022, 09:41
von MathGenie123
wie wird denn dort iteriert ?

Re: iterationschritte einer liste

Verfasst: Freitag 17. Juni 2022, 09:56
von bords0
Um das zu verstehen, hilft dir vielleicht, die list comprehensions (eine oder beide) auflösen. Ich löse mal die äußere auf:

Code: Alles auswählen

attributes_by_class = []
for i in range(1, 14):
    attributes_by_class.append(
        [data[:, i][data[:, 0] == c] for c in (1, 2, 3)]
    )

Re: iterationschritte einer liste

Verfasst: Freitag 17. Juni 2022, 10:13
von MathGenie123
wie kommt man darauf dass die iteration von 1-14 als die äußere schleife gilt ? müsste sie nicht die innere schleife sein ?

Re: iterationschritte einer liste

Verfasst: Freitag 17. Juni 2022, 10:20
von Sirius3
Vielleicht helfen auch einfach sinnvolle Zeilenumbrüche:

Code: Alles auswählen

attributes_by_class = [
    [
        data[data[:,0] == c, i]
        for c in (1,2,3)
    ]
    for i in range(1,14)
]
Wenn man über Indices eines numpy-Arrays macht man meist was falsch.
So ist das Format etwas anders, sollte aber eh besser sein:

Code: Alles auswählen

attributes_by_class = [
    data[data[:, 0] == c, 1:]
    for c in (1,2,3)
]

Re: iterationschritte einer liste

Verfasst: Freitag 17. Juni 2022, 10:28
von bords0
MathGenie123 hat geschrieben: Freitag 17. Juni 2022, 10:13 wie kommt man darauf dass die iteration von 1-14 als die äußere schleife gilt ? müsste sie nicht die innere schleife sein ?
Weil es die äußere der beiden list comprehensions ist.

Nicht verwechseln mit einer list comprehension mit zwei for-Schleifen drin, das ist etwas anderers.

Oder vielleicht musst du einfach nochmal nachlesen, wie list comprehension funktionieren.

Re: iterationschritte einer liste

Verfasst: Freitag 17. Juni 2022, 10:39
von __deets__
Da kommt man drauf, wenn man sich mal die Dokumentation zu dem Sprachfeature durchliest. Hast du das mal gemacht?

Re: iterationschritte einer liste

Verfasst: Freitag 17. Juni 2022, 11:05
von MathGenie123
nein, ich bin java programmer und bin neu umgestiegen

Re: iterationschritte einer liste

Verfasst: Freitag 17. Juni 2022, 11:08
von __deets__
Ja und, mit dem Hinweis "das ist folgendes Feature" kann's doch losgehen?