Imagine que tem muitos clientes de diferentes cidades ao redor do mundo. Mantém um registo das cidades e tem uma lista das cidades de onde os seus clientes vêm. Essa lista pode ser assim: ['San Francisco', 'New York', 'Yerevan', 'New York', 'Tel Aviv', ...].
Reparou que há alguns clientes da mesma cidade, como New York. Gostaria de saber quais são as cidades únicas de onde teve clientes.
Um set é uma coleção não ordenada sem elementos duplicados. Ajuda a manter registo dos elementos únicos e não tem uma ordem particular. É simplesmente uma coleção de elementos semelhante a uma lista ou uma tupla, mas sem ordem e que garante a unicidade dos elementos.
Podemos verificar se um item está no set com o operador 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
É muito mais rápido verificar se um determinado elemento está presente num set em comparação com uma list. Isto deve-se à natureza do set como estrutura de dados. Nas listas, o Python precisa de comparar os elementos um por um, desde o primeiro até ao último, e retornar True se estiver presente ou False caso contrário. Portanto, percorre toda a lista elemento por elemento para fazer a verificação. Em contraste, a estrutura de um set permite fazer esta verificação com muito menos operações.
Desafio
Está a ajudar uma mercearia a gerir o seu inventário. Para cada produto, eles anotaram o nome da empresa que entrega esse produto. Eles gostariam de enviar uma mensagem a essas empresas indicando-lhes a quantidade de mercadorias de que vão precisar no próximo mês. No entanto, algumas empresas entregam vários produtos, por isso a loja não quer enviar várias mensagens para a mesma empresa. Em vez disso, eles gostariam de obter a lista de empresas com as quais trabalham para, posteriormente, enviar a mensagem a cada uma delas. Pedem-lhe para escrever um programa que imprima todos os nomes das empresas com as quais a loja tem parceria.
A primeira linha da entrada contém um único inteiro n - o número de produtos. As próximas n linhas contêm o nome da empresa para cada produto.
O programa deve imprimir os nomes únicos das empresas com as quais a loja faz parceria, cada um numa linha separada.