Seite 1 von 1

Liste gibt bool statt int zurück

Verfasst: Freitag 30. September 2022, 07:17
von dahvid
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)

Re: Liste gibt bool statt int zurück

Verfasst: Freitag 30. September 2022, 07:34
von Dennis89
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

Re: Liste gibt bool statt int zurück

Verfasst: Freitag 30. September 2022, 07:42
von dahvid
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

Re: Liste gibt bool statt int zurück

Verfasst: Freitag 30. September 2022, 10:43
von __blackjack__
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