Problem bei Liste

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
Good1
User
Beiträge: 5
Registriert: Mittwoch 6. Januar 2021, 14:42

L= [[2,2],[3,7]]
produkt= 1
d=[]
for element in L:
e= L[0][0]*L[0][1]
d=[e]
e=L[0]+[1]

print('Primfaktoren:', L)
print('Zahl:',d)

Das Ziel des Programmes soll es sein alle Zahlen innerhalb der Liste die in L stehen zu multiplizieren. Mir fällt es momentan schwer wie ich in der Form Schleife es schaffen kann das L[0][0] zu L[1] [0] wird und das andere L halt ebenso +1. Würde mich freuen über eine Antwort
Jankie
User
Beiträge: 592
Registriert: Mittwoch 26. September 2018, 14:06

Gewöhn dir am besten an direkt richtige Variablennamen zu suchen. Die Namen sollten aussagen was sich dahinter befindet, aber keine Dateitypen beninhalten und klein geschrieben werden laut PEP8.

Möchtest du also 2*2 rechnen, das Ergebnis irgendwo speichern und das gleiche dann mit 3*7?
Good1
User
Beiträge: 5
Registriert: Mittwoch 6. Januar 2021, 14:42

Jankie hat geschrieben: Mittwoch 20. Januar 2021, 13:26 Gewöhn dir am besten an direkt richtige Variablennamen zu suchen. Die Namen sollten aussagen was sich dahinter befindet, aber keine Dateitypen beninhalten und klein geschrieben werden laut PEP8.

Möchtest du also 2*2 rechnen, das Ergebnis irgendwo speichern und das gleiche dann mit 3*7?
Ja genau das meine ich
Jankie
User
Beiträge: 592
Registriert: Mittwoch 26. September 2018, 14:06

Dafür musst du über deine Liste iterieren (bei dir L) mit einer for-Schleife. So kommst du an jede "unter Liste" ran. Bei jeder dieser "unter Listen" musst du dann den ersten Wert mit dem zweiten verrrechen und das Ergebnis an die neue Liste (bei dir d) anhängen.
Benutzeravatar
__blackjack__
User
Beiträge: 14047
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Ist am Ende so etwas hier gesucht?

Code: Alles auswählen

In [208]: L = [[2, 2], [3, 7]]                                                  

In [209]: sum(a * b for a, b in L)                                              
Out[209]: 25
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Good1
User
Beiträge: 5
Registriert: Mittwoch 6. Januar 2021, 14:42

Jankie hat geschrieben: Mittwoch 20. Januar 2021, 13:55 Dafür musst du über deine Liste iterieren (bei dir L) mit einer for-Schleife. So kommst du an jede "unter Liste" ran. Bei jeder dieser "unter Listen" musst du dann den ersten Wert mit dem zweiten verrrechen und das Ergebnis an die neue Liste (bei dir d) anhängen.
Das was ich halt nicht ist es wie ich es schaffe den ersten wert mit dem zweiten zu verrechnen damit bei der nächsten Liste das auch so passiert
Jankie
User
Beiträge: 592
Registriert: Mittwoch 26. September 2018, 14:06

L ist bei dir eine Liste, die aus Listen besteht die Zahlen beinhalten. Iterier mal mit einer for-Schleife über dein L und lass dir immer die aktuelle Liste mit print() ausgeben. Also nicht über den Index auf die Listen zugreifen, sondern direkt über L iterieren:

Code: Alles auswählen

L = [[2,2],[3,7]]
for element in L:
    print(element)
Ausgabe:

Code: Alles auswählen

[2, 2]
[3, 7]
dann siehst du, dass element bei jedem durchlauf eine der "unter Listen" ist. Nun musst du nur noch für jede dieser "unter Listen" den ersten Wert mit dem zweiten Wert verrechnen, das kannst du über den Index machen, oder indem du wie bei __blackjack__ im Beitrag die Liste entpackst und an zwei Variablen bindest.

Möglichkeit mit Indexzugriff:

Code: Alles auswählen

L = [[2,2],[3,7]]
for element in L:
    print(element[0] * element[1])
Möglichkeit mit entpacken der Liste:

Code: Alles auswählen

L = [[2,2],[3,7]]
for first_number, second_number in L:
    print(first_number * second_number)
So bekommst du schon mal die einzelnen Ergebnisse. Die möchtest du ja auch in einer neuen Liste speichern, also musst du dir vor der for-Schleife eine Liste erstellen, an die dein Ergebnis drangehängt wird (vor der Schleife, da sonst die Liste bei jedem Durchlauf überschrieben wird). Wenn die for-Schleife fertig ist, kannst du dir die Liste mit den Ergebnissen ausgeben lassen:

Code: Alles auswählen

L = [[2,2],[3,7]]
ergebnisse = []
for first_number, second_number in L:
    ergebnisse.append(first_number, second_number)
print(ergebnisse)
Mit List comprehension geht das ganze dann etwas kompakter:

Code: Alles auswählen

ergebnisse = [first_number * second_number for first_number, second_number in L]
#oder so
ergebnisse = [element[0] *  element[1] for element in L]
Good1
User
Beiträge: 5
Registriert: Mittwoch 6. Januar 2021, 14:42

Jankie hat geschrieben: Donnerstag 21. Januar 2021, 07:16 L ist bei dir eine Liste, die aus Listen besteht die Zahlen beinhalten. Iterier mal mit einer for-Schleife über dein L und lass dir immer die aktuelle Liste mit print() ausgeben. Also nicht über den Index auf die Listen zugreifen, sondern direkt über L iterieren:

Code: Alles auswählen

L = [[2,2],[3,7]]
for element in L:
    print(element)
Ausgabe:

Code: Alles auswählen

[2, 2]
[3, 7]
dann siehst du, dass element bei jedem durchlauf eine der "unter Listen" ist. Nun musst du nur noch für jede dieser "unter Listen" den ersten Wert mit dem zweiten Wert verrechnen, das kannst du über den Index machen, oder indem du wie bei __blackjack__ im Beitrag die Liste entpackst und an zwei Variablen bindest.

Möglichkeit mit Indexzugriff:

Code: Alles auswählen

L = [[2,2],[3,7]]
for element in L:
    print(element[0] * element[1])
Möglichkeit mit entpacken der Liste:

Code: Alles auswählen

L = [[2,2],[3,7]]
for first_number, second_number in L:
    print(first_number * second_number)
So bekommst du schon mal die einzelnen Ergebnisse. Die möchtest du ja auch in einer neuen Liste speichern, also musst du dir vor der for-Schleife eine Liste erstellen, an die dein Ergebnis drangehängt wird (vor der Schleife, da sonst die Liste bei jedem Durchlauf überschrieben wird). Wenn die for-Schleife fertig ist, kannst du dir die Liste mit den Ergebnissen ausgeben lassen:

Code: Alles auswählen

L = [[2,2],[3,7]]
ergebnisse = []
for first_number, second_number in L:
    ergebnisse.append(first_number, second_number)
print(ergebnisse)
Mit List comprehension geht das ganze dann etwas kompakter:

Code: Alles auswählen

ergebnisse = [first_number * second_number for first_number, second_number in L]
#oder so
ergebnisse = [element[0] *  element[1] for element in L]
Vielen vielen Dank! Hast mir echt sehr gut geholfen.
Antworten