Zum Inhalt springen
BetaEN
Lektion 15 von 35Python

Python · Lektion 15 · 30 Minuten

Tupel und Mengen

Das lernst du

  • Tupel als unveränderliche Wertepaare benutzen
  • Mit Mengen doppelte Werte entfernen
  • Schnittmenge, Vereinigung und Differenz bilden

Tupel: Werte, die zusammengehören

Ein Tupel sieht aus wie eine Liste, nur mit runden Klammern. Der große Unterschied: Man kann es nicht verändern. Das passt für Dinge, die fest zusammengehören – eine Koordinate, ein Datum, eine Farbe:

punkt = (3, 7)
print(punkt[0], punkt[1])

# Auspacken: jedem Wert einen Namen geben
x, y = punkt
print("x =", x, "y =", y)

farbe = (255, 128, 0)
rot, gruen, blau = farbe
print(rot + gruen + blau)

Tupel benutzt Python ganz oft im Hintergrund – zum Beispiel, wenn eine Funktion zwei Werte zurückgibt:

def min_max(zahlen):
    return min(zahlen), max(zahlen)


kleinste, groesste = min_max([4, 9, 1, 7])
print(kleinste, groesste)

Mengen: jeder Wert nur einmal

Eine Menge (set) schreibt man mit geschweiften Klammern. Sie hat keine feste Reihenfolge und enthält jeden Wert nur einmal:

besucher = ["Ana", "Ben", "Ana", "Cem", "Ben"]
einzigartig = set(besucher)
print(einzigartig)
print(len(einzigartig), "verschiedene Besucher")
print("Cem" in einzigartig)

Rechnen mit Mengen

Diese Zeichen funktionieren nur mit Mengen. Hast du Listen, mach sie zuerst mit set(...) zu Mengen.

ZeichenNameBedeutung
a & bSchnittmengein beiden
a | bVereinigungin mindestens einer
a - bDifferenzin a, aber nicht in b
fussball = {"Ana", "Ben", "Cem"}
schach = {"Cem", "Dora", "Ana"}
print("beides:", fussball & schach)
print("irgendwas:", fussball | schach)
print("nur Fußball:", fussball - schach)

Kurz-Check

Bevor es an die Aufgabe geht: Was gibt dieses Programm aus?

zahlen = [5, 3, 5, 1, 3]
print(len(zahlen), len(set(zahlen)))

Deine Aufgabe

Jetzt bist du dran

Schreib zwei Funktionen. verschiedene(liste) gibt zurück, wie viele verschiedene Werte in der Liste stehen. gemeinsam(a, b) bekommt zwei Listen und gibt eine sortierte Liste der Werte zurück, die in beiden vorkommen (jeden nur einmal). Benutze dafür Mengen. Achtung: & funktioniert nur mit Mengen, nicht mit Listen – a & b gibt hier einen Fehler. Mach also zuerst aus jeder Liste eine Menge.

def verschiedene(liste):
    pass


def gemeinsam(a, b):
    pass


print(verschiedene([1, 2, 2, 3, 3, 3]))
print(gemeinsam(["Ana", "Ben", "Cem"], ["Cem", "Dora", "Ana"]))

Ohne Hinweise gelöst gibt es einen ⭐ auf deiner Fortschrittsseite.

Lösung anzeigen

Versuch es erst selbst – aus Fehlern lernt man am meisten. Hier ist eine mögliche Lösung:

def verschiedene(liste):
    return len(set(liste))


def gemeinsam(a, b):
    return sorted(set(a) & set(b))


print(verschiedene([1, 2, 2, 3, 3, 3]))
print(gemeinsam(["Ana", "Ben", "Cem"], ["Cem", "Dora", "Ana"]))