Uma das maiores vantagens do Python é o vasto conjunto de ferramentas que ele fornece para trabalhar com seus tipos de dados. Ao trabalhar com várias listas, às vezes é necessário percorrê-las e realizar algumas operações com base nos valores de todas as listas. Isso pode ser feito iterando sobre os índices e acessando os elementos, ou usando a função embutida zip.
heights = [180, 190, 178]
weights = [89, 92, 77]
for i in range(len(heights)):
h, w = heights[i], weights[i]
print(h, '=>', w)
heights = [180, 190, 178]
weights = [89, 92, 77]
for h, w in zip(heights, weights):
print(h, '=>', w)
A função zip cria tuplas a partir dos elementos das listas passadas para ela. Ela pode lidar com um número arbitrário de listas. Assim, podemos ter zip(list1, list2, list3, ..., listn). Ela criará tuplas, cada uma contendo n elementos se houver n listas passadas para o zip.
Observe que ela combina os elementos até a lista mais curta. Portanto, se fornecermos duas listas onde uma é mais curta que a outra, os últimos elementos extras da segunda serão ignorados.
Se quisermos ser rigorosos quanto a isso e não permitir o corte das listas mais longas, podemos dizer ao Python para gerar um erro se isso acontecer, fornecendo um argumento adicional strict=True:
heights = [180, 190]
names = ['Bob', 'Liza', 'Anna']
for h, name in zip(heights, names, strict=True):
print(name, '=>', h)
# ValueError: zip() argument 2 is longer than argument 1
Desafio
A entrada contém 3 listas, cada uma em uma linha separada. Os elementos das listas são separados por um espaço. É garantido que as listas têm o mesmo número de elementos.
O programa deve imprimir uma nova lista que contém o produto dessas 3 listas.