set

Представьте, что у вас много клиентов из разных городов по всему миру. Вы отслеживаете их города и имеете список городов, откуда приезжают ваши клиенты. Этот список может выглядеть так: ['San Francisco', 'New York', 'Yerevan', 'New York', 'Tel Aviv', ...].
Вы заметили, что некоторые клиенты из одного и того же города, например, New York. Вы хотели бы узнать, из каких уникальных городов у вас были клиенты.
Это легко сделать с помощью set в 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
Множество (set) — это неупорядоченная коллекция без дублирующихся элементов. Оно помогает отслеживать уникальные элементы и не имеет определенного порядка. Это просто коллекция элементов, похожая на список или кортеж, но без порядка и гарантирует уникальность элементов.
 
Мы можем проверить, находится ли элемент в множестве с помощью оператора 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
Проверка наличия определенного элемента в set происходит гораздо быстрее, чем проверка в list. Это связано с природой set как структуры данных. Для списков Python необходимо сравнивать элементы один за другим, от первого элемента списка до последнего, и вернуть True, если элемент присутствует, и False в противном случае. То есть он проходит через весь список по одному, чтобы выполнить проверку. В отличие от этого, структура множества позволяет выполнить эту проверку с гораздо меньшим количеством операций.

Задание

Вы помогаете продовольственному магазину управлять своим инвентарем. Для каждого продукта они записали название компании, которая поставляет этот продукт. Они хотели бы отправить сообщение этим компаниям, сообщив им, сколько их товаров понадобится в следующем месяце. Однако некоторые компании поставляют несколько продуктов, поэтому магазин не хочет отправлять несколько сообщений одной и той же компании. Вместо этого они хотели бы получить список компаний, с которыми они работают, чтобы затем отправить им сообщение. Они просят вас написать программу, которая выведет все компании, с которыми они сотрудничают.
Первая строка ввода содержит одно целое число n — количество продуктов. Следующие n строк содержат название компании для каждого продукта.
Программа должна вывести уникальные названия компаний, с которыми сотрудничает магазин, каждое на отдельной строке.
Ввод
Вывод
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