A função zip () pega iteráveis (pode ser zero ou mais), agrega-os em uma tupla e a retorna.
A sintaxe da zip()
função é:
zip (* iteráveis)
Parâmetros zip ()
Parâmetro | Descrição |
---|---|
iterables | podem ser iteráveis integrados (como: lista, string, dict) ou iteráveis definidos pelo usuário |
Leitura recomendada: Iteradores Python, __iter__ e __next__
Valor de retorno do zip ()
A zip()
função retorna um iterador de tuplas com base nos objetos iteráveis.
- Se não passarmos nenhum parâmetro,
zip()
retorna um iterador vazio - Se um único iterável é passado,
zip()
retorna um iterador de tuplas com cada tupla tendo apenas um elemento. - Se vários iteráveis forem passados,
zip()
retorna um iterador de tuplas com cada tupla tendo elementos de todos os iteráveis.
Suponha que dois iteráveis sejam passados parazip()
; um iterável contendo três e outro contendo cinco elementos. Então, o iterador retornado conterá três tuplas. É porque o iterador para quando o iterável mais curto se esgota.
Exemplo 1: Python zip ()
number_list = (1, 2, 3) str_list = ('one', 'two', 'three') # No iterables are passed result = zip() # Converting iterator to list result_list = list(result) print(result_list) # Two iterables are passed result = zip(number_list, str_list) # Converting iterator to set result_set = set(result) print(result_set)
Resultado
() ((2, 'dois'), (3, 'três'), (1, 'um'))
Exemplo 2: número diferente de elementos iteráveis
numbersList = (1, 2, 3) str_list = ('one', 'two') numbers_tuple = ('ONE', 'TWO', 'THREE', 'FOUR') # Notice, the size of numbersList and numbers_tuple is different result = zip(numbersList, numbers_tuple) # Converting to set result_set = set(result) print(result_set) result = zip(numbersList, str_list, numbers_tuple) # Converting to set result_set = set(result) print(result_set)
Resultado
((2, 'DOIS'), (3, 'TRÊS'), (1, 'UM')) ((2, 'dois', 'DOIS'), (1, 'um', 'UM'))
O operador * pode ser usado em conjunto com zip()
para descompactar a lista.
zip (* zippedList)
Exemplo 3: descompactando o valor usando zip ()
coordinate = ('x', 'y', 'z') value = (3, 4, 5) result = zip(coordinate, value) result_list = list(result) print(result_list) c, v = zip(*result_list) print('c =', c) print('v =', v)
Resultado
(('x', 3), ('y', 4), ('z', 5)) c = ('x', 'y', 'z') v = (3, 4, 5)