Como usar o código VS como seu IDE Python
24 de fevereiro de 2024CheerpJ 3.0: execute aplicativos no navegador com WebAssembly
26 de fevereiro de 2024Você já escreveu um trecho de código Python onde precisa agregar elementos de múltiplas variáveis onde a primeira entrada em um contêiner é emparelhada com a primeira entrada no segundo contêiner? É quando você chama a função Python zip().
Para ilustrar isso, vamos usar uma linha de números e uma linha de letras como esta:
(1, 2, 3, 4, 5) (a, b, c, d, e)
Usando a função zip(), a iteração ficará assim:
((1, a), (2, b), (3, c), (4, d), (5, e))
Outro exemplo, usando nomes e sobrenomes:
(Aaron, Anton, Jean, Camille, Clara) (Kennedy, Frank, Barber, St. Jude, Beach)
As tuplas acima iteram para:
((Aaron, Kennedy), (Anton, Frank), (Jean, Barber), (Camille, St. Jude), (Clara, Beach))
Claro, para que algo assim faça mais sentido, você pode colocar os sobrenomes no primeiro contêiner e os primeiros nomes no segundo contêiner, então a saída seria:
((Kennedy, Aaron), (Frank, Anton), (Barber, Jean), (St. Jude, Camille), (Beach, Clara))
Tempos divertidos.
A função zip() pode ser usada com tuplas, listas ou qualquer outro tipo de iterável Python e facilita a combinação de dois ou mais contêineres em um único contêiner. No final, o iterável resultante conterá tuplas (uma coleção ordenada e imutável).
Quero mostrar como usar a função Python zip() de algumas maneiras diferentes. A primeira será uma demonstração simples de como zip() funciona e a segunda incorporará algumas ideias mais complicadas. No final, ambos simplesmente iteram por um contêiner e criam uma tupla que pode ser impressa ou usada em seu programa.
O que você precisará
Para acompanhar, você precisará do Python 3 instalado em seu computador. Não importa qual sistema operacional você está usando, desde que ele suporte Python. Vou demonstrar no Ubuntu Budgie, mas você faz isso com o sistema operacional que preferir.
Nosso primeiro exemplo pegará duas listas de nomes (um primeiro e um último) e os combinará em um objeto zip de tuplas, de forma que veremos o sobrenome e o nome separados por vírgula.
A função zip() está incluída na biblioteca básica do Python, então não precisamos importar nada e podemos mergulhar direto em nosso script.
A primeira linha definirá nossa lista de sobrenomes e ficará assim:
last = ("Kennedy", "Frank", "Barber", "St. Jude", "Beach")
Nossa segunda linha define os primeiros nomes como b e se parece com isto:
first = ("Aaron", "Anton", "Jean", "Camille", "Clara")
Nossa linha de lista definirá nomes com a função zip(), assim:
names = zip(last, first)
Finalmente, usamos as funções print() e Tuple() para imprimir a lista agregada assim:
print(tuple(names))
Crie o novo arquivo com o comando:
nano names.py
Cole o seguinte conteúdo no novo arquivo:
last = ("Kennedy", "Frank", "Barber", "St. Jude", "Beach") first = ("Aaron", "Anton", "Jean", "Camille", "Clara")
names = zip(last, first) print(tuple(names))
Salve e feche o arquivo.
Execute o programa assim:
python3 names.py
Como esperado, a saída será:
(('Kennedy', 'Aaron'), ('Frank', 'Anton'), ('Barber', 'Jean'), ('St. Jude', 'Camille'), ('Beach', 'Clara'))
Vamos tornar isso um pouco mais desafiador, certo?
Nosso segundo exemplo
Desta vez, o que faremos é definir uma lista de nomes, definir uma lista de sobrenomes e usar a função zip() para iterar uma ordem aleatória das tuplas combinadas. Essa pode ser uma maneira prática de atribuir uma ordem a ser seguida pelas pessoas.
Este script usará o fecho eclair(), imprimir()e definir() funções. Você já sabe o que as funções zip() e print() fazem. A função set() pega um par de listas e as combina em uma ordem aparentemente aleatória. Isso não é aleatoriedade verdadeira, mas funciona para nossos propósitos.
Definiremos nossos primeiros nomes como nomes com:
fnames = ("Aaron", "Anton", "Jean", "Camille", "Clara")
A seguir, definiremos sobrenomes assim:
lnames = ("Kennedy", "Frank", "Barber", "St. Jude", "Beach")
Agora definimos nosso fecho eclair() função (usando nossas listas fnames e lnames) mapeada da seguinte forma:
mapped = zip(fnames, lnames)
Finalmente, combinamos as funções print() e set() assim:
print(set(mapped))
Crie um novo arquivo com o comando:
nano random.py
Nesse arquivo, cole o seguinte:
fnames = ("Aaron", "Anton", "Jean", "Camille", "Clara") lnames = ("Kennedy", "Frank", "Barber", "St. Jude", "Beach") mapped = zip(fnames, lnames) print(set(mapped))
Salve e feche o arquivo.
Execute nosso novo aplicativo Python assim:
python3 random.py
A saída pode ser assim:
{('Anton', 'Frank'), ('Clara', 'Beach'), ('Aaron', 'Kennedy'), ('Jean', 'Barber'), ('Camille', 'St. Jude')}
Execute-o novamente e a saída poderá ficar assim:
{('Camille', 'St. Jude'), ('Anton', 'Frank'), ('Aaron', 'Kennedy'), ('Jean', 'Barber'), ('Clara', 'Beach')}
Mais uma vez, a saída pode ser semelhante a:
{('Aaron', 'Kennedy'), ('Anton', 'Frank'), ('Jean', 'Barber'), ('Camille', 'St. Jude'), ('Clara', 'Beach')}
O que criamos é um aplicativo simples para gerar uma ordem (aparentemente) aleatória de nomes, graças à função zip() do Python.
Você também pode usar zip() com mais de dois iteráveis. Vamos adicionar nomes do meio à mistura com o aplicativo acima, que pode ser mais ou menos assim:
fnames = ("Aaron", "Anton", "Jean", "Camille", "Clara") mnames = ("Lee", "James", "Isobelle", "Jessica", "Summer") lnames = ("Kennedy", "Frank", "Barber", "St. Jude", "Beach") mapped = zip(fnames, mnames, lnames) print(set(mapped))
E esse é o básico do uso da função Python zip().
A postagem Como usar a função Python zip() apareceu pela primeira vez em The New Stack.