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: 1153
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: 13071
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
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Antworten