set

Imaginez que vous avez de nombreux clients provenant de différentes villes à travers le monde. Vous gardez une trace de leurs villes et avez une liste des villes d'où viennent vos clients. Cette liste pourrait ressembler à ceci : ['San Francisco', 'New York', 'Yerevan', 'New York', 'Tel Aviv', ...].
Vous avez remarqué que certains clients viennent de la même ville, comme New York. Vous souhaitez connaître les villes uniques d'où proviennent vos clients.
C'est facile à faire avec un set en Python :
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
Un set (ensemble) est une collection non ordonnée sans éléments dupliqués. Il aide à garder une trace des éléments uniques et n'a pas d'ordre particulier. C'est simplement une collection d'éléments similaire à une liste ou un tuple, mais sans ordre et qui garantit l'unicité des éléments.
 
Nous pouvons vérifier si un élément est dans le set avec l'opérateur in :
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
Il est beaucoup plus rapide de vérifier si un certain élément est présent dans un set par rapport à une list. Cela est dû à la nature du set en tant que structure de données. Pour les listes, Python doit comparer les éléments un par un depuis le premier élément de la liste jusqu'au dernier et retourner True s'il est présent et False sinon. Donc, il parcourt toute la liste élément par élément pour effectuer la vérification. En revanche, la structure d'un set permet de faire cette vérification avec beaucoup moins d'opérations.

Défi

Vous aidez une épicerie à gérer son inventaire. Pour chaque produit, ils ont noté le nom de l'entreprise qui livre ce produit. Ils souhaitent envoyer un message à ces entreprises pour leur indiquer la quantité de leurs marchandises dont ils auront besoin le mois prochain. Cependant, certaines entreprises livrent plusieurs produits, donc le magasin ne voudrait pas envoyer plusieurs messages à la même entreprise. Au lieu de cela, ils aimeraient obtenir la liste des entreprises avec lesquelles ils travaillent afin de leur envoyer le message par la suite. Ils vous demandent d'écrire un programme pour afficher tous les noms des entreprises avec lesquelles ils sont partenaires.
La première ligne de l'entrée contient un entier n - le nombre de produits. Les n lignes suivantes contiennent le nom de l'entreprise pour chaque produit.
Le programme doit afficher les noms uniques des entreprises avec lesquelles le magasin est partenaire, chacun sur une ligne séparée.
Entrée
Sortie
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