set

Stellen Sie sich vor, Sie haben viele Kunden aus verschiedenen Städten auf der ganzen Welt. Sie führen eine Liste der Städte, aus denen Ihre Kunden kommen. Diese Liste könnte so aussehen: ['San Francisco', 'New York', 'Yerevan', 'New York', 'Tel Aviv', ...].
Sie haben bemerkt, dass es einige Kunden aus derselben Stadt wie New York gibt. Sie möchten gerne wissen, aus welchen einzigartigen Städten Ihre Kunden stammen.
Das lässt sich in Python einfach mit einem set erledigen:
cities = ['San Francisco', 'New York', 'Yerevan', 'New York', 'Tel Aviv', 
            'San Diego', 'San Francisco', 'Yerevan']
uniques = set(cities)
print(uniques)
# {'San Diego', 'Yerevan', 'San Francisco', 'New York', 'Tel Aviv'}

print(len(cities))     # 8
print(len(uniques))    # 5
Ein Set ist eine ungeordnete Sammlung ohne doppelte Elemente. Es hilft dabei, die einzigartigen Elemente zu erfassen und hat keine bestimmte Reihenfolge. Es ist einfach eine Sammlung von Elementen, ähnlich wie eine Liste oder ein Tupel, jedoch ohne Reihenfolge und mit der Garantie, dass jedes Element einzigartig ist.
 
Wir können mit dem in-Operator prüfen, ob ein Element im Set enthalten ist:
print('San Francisco' in uniques)   # True
print('Tel Aviv' in uniques)        # True
print('London' in uniques)          # False
print('Amsterdam' in uniques)       # False
print(3 in uniques)                 # False
Es ist deutlich schneller zu prüfen, ob ein bestimmtes Element in einem set vorhanden ist, als in einer list. Das liegt an der Art des set als Datenstruktur. Bei Listen muss Python die Elemente nacheinander vergleichen, vom ersten bis zum letzten, und gibt True zurück, wenn das Element vorhanden ist, andernfalls False. Es durchläuft also die gesamte Liste Element für Element. Im Gegensatz dazu ermöglicht die Struktur eines Sets, diese Überprüfung mit wesentlich weniger Operationen durchzuführen.

Herausforderung

Sie unterstützen einen Lebensmittelladen bei der Verwaltung seines Inventars. Für jedes Produkt haben sie den Namen der Firma notiert, die das Produkt liefert. Sie möchten diesen Firmen eine Nachricht schicken, um ihnen mitzuteilen, wie viel von ihren Waren sie im kommenden Monat benötigen. Da einige Firmen mehrere Produkte liefern, möchte der Laden nicht mehrere Nachrichten an dieselbe Firma senden. Stattdessen möchten sie eine Liste der Firmen erhalten, mit denen sie zusammenarbeiten, um ihnen anschließend die Nachricht zu schicken. Sie werden gebeten, ein Programm zu schreiben, das alle Firmen ausgibt, mit denen sie partnerschaftlich verbunden sind.
Die erste Zeile der Eingabe enthält eine einzelne ganze Zahl n – die Anzahl der Produkte. Die nächsten n Zeilen enthalten den Firmennamen für jedes Produkt.
Das Programm soll die einzigartigen Namen der Firmen ausgeben, mit denen der Laden zusammenarbeitet, jeweils in einer separaten Zeile.
Eingabe
Ausgabe
5 Nestle Mars Nestle Coca Cola Nestle
Nestle Mars Coca Cola

Constraints

Time limit: 2 seconds

Memory limit: 512 MB

Output limit: 1 MB

To check your solution you need to sign in
Sign in to continue