9. Zip()

  • zip(sequência1,sequência2)
  • A função zip() agrega os valores de duas sequências e retorna uma sequência em um objeto tupla.
  • zip() pode ser usada quando o número de elementos for diferente em cada sequência. Mas o objeto resultante será uma sequência de tamanho igual ao da menor sequência.

9.1. Exemplo

  • Criando duas listas
x = [1,2,3]
y = [4,5,6]
  • Unindo as listas. Em Python3 retorna um iterator
zip(x, y)
<zip at 0x16c55c08488>
  • Perceba que zip retorna tuplas. Neste caso, uma lista de tuplas
list(zip(x,y))
[(1, 4), (2, 5), (3, 6)]
  • Atenção quando as sequências tiverem número diferente de elementos
list(zip('ABCD', 'xy'))
[('A', 'x'), ('B', 'y')]
  • Criando duas listas
a = [1,2,3]
b = [4,5,6,7,8]
  • Observe como o resultado da agregação das listas de número de elementos diferentes resulta em uma tupla com número de elementos igual ao da lista de menor elementos.
list(zip(a,b)) 
[(1, 4), (2, 5), (3, 6)]

9.2. Criando 2 dicionários

d1 = {'a':1,'b':2}
d2 = {'c':4,'d':5}
  • Zip vai unir as chaves
list(zip(d1,d2))
[('a', 'c'), ('b', 'd')]
  • Zip pode unir os valores (itens)
list(zip(d1, d2.values()))
[('a', 4), ('b', 5)]
  • Criando uma função para trocar valores entre 2 dicionários
def trocaValores(d1, d2):
    dicTemp = {}
    
    for d1key, d2val in zip(d1,d2.values()):
        dicTemp[d1key] = d2val
    
    return dicTemp
trocaValores(d1, d2)
{'a': 4, 'b': 5}