Seite 1 von 1
Problem bei Liste
Verfasst: Mittwoch 20. Januar 2021, 13:21
von Good1
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
Re: Problem bei Liste
Verfasst: Mittwoch 20. Januar 2021, 13:26
von Jankie
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?
Re: Problem bei Liste
Verfasst: Mittwoch 20. Januar 2021, 13:48
von Good1
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
Re: Problem bei Liste
Verfasst: Mittwoch 20. Januar 2021, 13:55
von Jankie
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.
Re: Problem bei Liste
Verfasst: Mittwoch 20. Januar 2021, 14:02
von __blackjack__
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
Re: Problem bei Liste
Verfasst: Mittwoch 20. Januar 2021, 19:29
von Good1
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
Re: Problem bei Liste
Verfasst: Donnerstag 21. Januar 2021, 07:16
von Jankie
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:
Ausgabe:
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]
Re: Problem bei Liste
Verfasst: Donnerstag 21. Januar 2021, 11:02
von Good1
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:
Ausgabe:
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.