<jupyter_start><jupyter_text>Funções ZIP e Enumerate Função ZIPA função `zip()`agrega os valores de duas sequências e retorna uma tupla. Sintaxe: `zip( sequência, sequência )`Pode ser quando o número de elementos for diferente em cada sequência. Mas o objeto retornado terá a mesma quantidade de elementos da sequência menor.Ou seja:```zip( [1,2,3,4], [1,2,3] )(1,1)(2,2)(3,3)```Observação: O quarto valor da primeira lista não será retornado, pois não existe seu correspondente na lista menor. Função EnumeratePermite retornar o índice de cada valor em uma sequência, à medida que a sequência é percorrida. `Enumerate` retorna uma tupla no formato `tupla( índice, valor )`.  1. Função ZIP<jupyter_code># Criação de duas listas
x = [ 1, 2, 3 ]
y = [ 4, 5, 6 ]
# Unir as listas com a função zip()
zip(x, y)
# A função zip() também retorna um iterator, que deve ser convervido em uma lista para que seja possível visualizas as tuplas
# Nota-se que os valores nos índices correspondentes entre as listas, foram unidas
list( zip( x, y) )
# Testando com quantidades diferentes de valores
# Apenas duas tuplas serão retornadas, pois será retornado o tamanho da menor tupla
list( zip( 'ABC', 'xy' ) )
# Criar outras duas listas
a = [1,2,3]
b = [4,5,6,7,8]
list( zip( a, b) )
# Dicionários em Python também são sequências
d1 = { 'a': 1, 'b': 2 }
d2 = { 'c': 4, 'd': 5 }
# A função zip() unirá as chaves, desconsiderando os valores
list( zip( d1, d2 ) )
# Unindo as chaves
list( zip( d1.values(), d2.values() ) )
# Ou apenas o valor de uma das chaves
list( zip( d1, d2.values() ) )
# Criar uma função para trocar os valores entre os dois dicionários
def trocaValores( d1, d2 ):
  
  dicTemp = {}
  
  for d1key, d2val in zip( d1, d2.values() ):
    
    dicTemp[ d1key ] = d2val
    
    return dicTemp
trocaValores( d1, d2 )<jupyter_output><empty_output><jupyter_text>2. Função Enumerate<jupyter_code># Criar uma lista com três caracteres
seq = [ 'a', 'b', 'c' ]
# Será retornado um iterator
enumerate( seq )
# Novamente precisamos converter para uma lista para obtermos os valores
# Nota-se que o primeiro elemento de cada tupla é um índice
list( enumerate( seq ) )
# Imprimir os valores de uma lista com a função enumerate() e seus respectivos índices
for indice, valor in enumerate( seq ): 
  print( indice, valor )
# Percorrer os elementos dentro da lista com seus respectivos índices
# Se o índice for maior ou igual à dois parar a execução
# Isto é útil para retornar parte valores em função do índice
for indice, valor in enumerate( seq ):
  if( indice >= 2):
    break
  else:
    print( valor )
# Criar uma lista de strings
lst = [ 'Marketing', 'Tecnologia', 'Business' ]
# Imprimir os índices e seus valores respectivos
for i, item in enumerate( lst ):
  print( i, item )
# A sequência de elementos pode ser qualquer coisa, inclusive uma string
for i, itens in enumerate( 'Isso é uma string' ):
  print( i, itens)

# E também fazer o mesmo com um range de elementos
for i, itens in enumerate( range( 10 ) ):
  print( i, itens )<jupyter_output>0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
{'fraction_non_alphanumeric': 0.0946822308690013, 'fraction_numerical': 0.023994811932555125, 'mean_word_length': 4.090759075907591, 'pattern_counts': {'":': 0, '<': 8, '<?xml version=': 0, '>': 9, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '2', 'dir': 'jupyter-structured-clean-dedup', 'id': '533972', 'license': 'MIT', 'n_tokens_mistral': 1180, 'n_tokens_neox': 1149, 'n_words': 469, 'path': 'src/03_tratamento_arquivos_modulos_pacotes_funcoes_buildin/06_funcoes_zip_e_enumerate.ipynb', 'repo_name': 'ralsouza/python_fundamentos', 'size': '3084'}