Erzeugen zweier Mengen

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
linda2524
User
Beiträge: 1
Registriert: Sonntag 15. November 2020, 15:55

Hallo!
Ich lerne gerade Python und weiß nicht genau, wie ich 2 verschiedene Mengen erstelle.
Die 1. Menge wäre G = {i^2: 20 <= i <= 40 und i ist eine Natürliche Zahl}
Die 2. Menge wäre H = {i^3: 1 <= i <= 20 und i ist eine Natürliche und ungerade Zahl}

Nach Erstellen der beiden Mengen muss ich noch die Vereinigung und den Durchschnitt berechnen. Das wäre kein großes Problem, nur bräuchte ich vorher eine Idee, wie ich die Mengen definieren könnte. :wink:

Vielen Dank für Eure Hilfe.
Benutzeravatar
__blackjack__
User
Beiträge: 14053
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@linda2524: Python hat dafür einen Datentyp: `set`. Auf dem sind entsprechende Operationen definiert für Vereinigung und Schnittmenge. Das reicht eigentlich schon an Information wenn man die Grundlagen von Python entweder schon beherrscht, oder erlernt. Also Schleifen und so. Was in Grundlagentutorials steht. Es gibt eines in der Python-Dokumentation.

Nützlich aber nicht zwingend notwendig ist auch die Schreibweise als „comprehension“ die es auch in einer Variante als „set comprehension“ gibt.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Benutzeravatar
snafu
User
Beiträge: 6870
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Man sollte sich außerdem mit der eingebauten range()-Funktion beschäftigen, wenn man natürliche Zahlen aus einem bestimmten Intervall benötigt. Wichtig ist, dass der stop-Parameter dabei exklusiv ist, d.h. bei einem Intervall bis 40 muss man 41 angeben.
Benutzeravatar
DeaD_EyE
User
Beiträge: 1240
Registriert: Sonntag 19. September 2010, 13:45
Wohnort: Hagen
Kontaktdaten:

Hier die schwierigere Lösung als set comprehension:

Code: Alles auswählen

H = {i**3 for i in range(1, 20 + 1) if i % 2 != 0}
(anstelle von 20 + 1 kann man auch 21 schreiben)

Da es bei der Menge G keine Bedingung gibt, entfällt der if-Abfrage.


Buchempfehlung: Konkrete Mathematik (nicht nur) für Informatiker.
Schwerpunkt ist Mathematik mit Bezug auf Python.
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server
Benutzeravatar
snafu
User
Beiträge: 6870
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Da Mengen in Python jedoch keine eindeutige Ordnung haben, kann man besser eine List Comprehension benutzen. Außerdem kennt range() das step-Argument, wodurch man etwas einfacher an die ungeraden Zahlen kommt. Demnach auch möglich:

Code: Alles auswählen

[i**3 for i in range(1, 21, 2)]
Sirius3
User
Beiträge: 18274
Registriert: Sonntag 21. Oktober 2012, 17:20

@snafu: in der Aufgabe will man aber explizit mit Mengen arbeiten.
Benutzeravatar
DeaD_EyE
User
Beiträge: 1240
Registriert: Sonntag 19. September 2010, 13:45
Wohnort: Hagen
Kontaktdaten:

snafu hat geschrieben: Montag 16. November 2020, 16:53 Außerdem kennt range() das step-Argument, wodurch man etwas einfacher an die ungeraden Zahlen kommt.
Stimmt. Gar nicht dran gedacht.

Code: Alles auswählen

H = {i**3 for i in range(1, 21, 2)}
Wichtig ist aber, dass das Ergebnis kommt, welches gefordert wird: Eine Menge

Eine Menge ist eine Sammlung von Elementen, die nicht doppelt vorkommen. Eine Menge hat keine Information über die Reihenfolge der Elemente.
Bis auf die Tatsache, dass es nur eine Leere Menge gibt, bildet Python Mengen ziemlich gut ab.
In der Liste können Elemente doppelt vorkommen und die Reihenfolge der Elemente ist auch bekannt.

Meine Reaktion, als ich das erste Mal in Python ein Set() kennengelernt habe: https://www.youtube.com/watch?v=9CS7j5I6aOc
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server
Antworten