Arbeiten mit Listen

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
NewJoX
User
Beiträge: 10
Registriert: Samstag 30. Januar 2021, 17:04

Guten Tag,

ich bin neu hier im Forum und könnte eure Hilfe gebrauchen.

ich möchte Listen miteinander vergleichen und lasse die identischen Indexe gegeneinander antreten, da ich sehen möchte welcher Wert größer ist. Aktuell muss ich dies manuell machen, also ..
avsb0 = a [0] < b [0]
avsb1 = a[1] < b [1]
usw...


a = [1, 2, 3, 4, 5, 6, 7, 8, 9 10]
b = [10, 9, 8, 7, 6 ,5 , 4, 3, 2, 1]

ich kann mit loops arbeiten aber ich weiß nicht wie ich das geregelt kriege das die indexe beide +1 weiter gehen. Könnte mir da jemand weiterhelfen?
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Mir ist nicht ganz klar was dein Endergebnis sein soll, aber ein elementweiser Vergleich mit Ergebnis und Index kann zB so erreicht werden:

Code: Alles auswählen

result = [(i, a_value < b_value) for i, (a_value, b_value) in enumerate(zip(a, b))]
narpfel
User
Beiträge: 691
Registriert: Freitag 20. Oktober 2017, 16:10

Mit `map` geht es auch:

Code: Alles auswählen

from operator import lt

result = map(lt, a, b)
Sirius3
User
Beiträge: 18274
Registriert: Sonntag 21. Oktober 2012, 17:20

Wobei der Index überflüssig ist, da das ja der Index des Elements in der Liste ist.

Code: Alles auswählen

result = [a_value < b_value for a_value, b_value in zip(a, b)]
@narpfel: map liefert einen nur einen Generator. Das muß man bei der weiteren Verarbeitung berücksichtigen.
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

@Sirius3 🤦‍♂️ Joa. Wo du recht hast.
NewJoX
User
Beiträge: 10
Registriert: Samstag 30. Januar 2021, 17:04

@__deets__ danke dir hat wunderbar geklappt, gibt es noch die Möglichkeit dies ohne () (1, True) anzeigen zu lassen, ich bräuchte in der Theorie nur die booleans Bewertung, denn ich möchte danach die True´s zählen lassen, dies geht scheinbar durch die () nicht und gibt es noch die Mögichkeit dies zu bestimmen wie oft er dies in der Liste macht also nur bis Index[4].
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Du kannst wie Sirius3 ja schon angedeutet hat auch einfach auf das enumerate verzichten. Und dann das i wegnehmen, und nur noch die boolschen Resultate sammeln.

Und wenn du eine kuerzere Liste berechnen willst, dann gib kuerzere Listen als Argumente an. Also a[:4] und b[:4] zb.
NewJoX
User
Beiträge: 10
Registriert: Samstag 30. Januar 2021, 17:04

Danke euch. Ihr habt mir sehr weitergeholfen!
Antworten