Liste gibt bool statt int zurück

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
dahvid
User
Beiträge: 7
Registriert: Freitag 30. September 2022, 07:14

Moin, ich möchte eine Liste mit n < 1000 zurückgeben, die durch 7 aber nicht durch 5 teilbar ist. Die Liste gibt aber nur True und False zurück anstatt Zahlen.

Code: Alles auswählen

teiler = [n % 7 == 0 and n % 5 != 0 for n in range(1000)]

print(teiler)
Benutzeravatar
Dennis89
User
Beiträge: 1618
Registriert: Freitag 11. Dezember 2020, 15:13

Hallo,

da fehlt die 'if'-Abfrage:

Code: Alles auswählen

teiler = [n for n in range(1000) if n % 7 == 0 and n % 5 != 0]
Du schreibst in deinem Fall nur die Rückgabe von der Bedingung in die Liste.

Grüße
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
dahvid
User
Beiträge: 7
Registriert: Freitag 30. September 2022, 07:14

Dennis89 hat geschrieben: Freitag 30. September 2022, 07:34 Hallo,

da fehlt die 'if'-Abfrage:

Code: Alles auswählen

teiler = [n for n in range(1000) if n % 7 == 0 and n % 5 != 0]
Du schreibst in deinem Fall nur die Rückgabe von der Bedingung in die Liste.

Grüße
Dennis
Super, vielen Dank! Sorry, bin noch Anfänger deswegen.

Grüße
Benutzeravatar
__blackjack__
User
Beiträge: 14185
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Statt alle Zahlen zu testen, könnte man das etwas abkürzen, sowohl in der Länge des Codes, als auch was die Laufzeit angeht, wenn man nur die vielfachen von 7 auf Teilbarkeit durch 5 testet:

Code: Alles auswählen

In [365]: teiler = [n for n in range(1000) if n % 7 == 0 and n % 5 != 0]

In [366]: teiler == [n for n in range(0, 1000, 7) if n % 5 != 0]
Out[366]: True
“Every thinking person fears nuclear war and every technological nation plans for it. Everyone knows
it's madness, and every country has an excuse.” — Carl Sagan, Cosmos, Episode 13: Who Speaks for Earth?
Antworten