Pitão

Listar compreensões em Python

Listar compreensões em Python
Compreensões de lista são frequentemente usadas em Python para escrever instruções de uma única linha que criam uma nova lista ou dicionário fazendo um loop em um objeto iterável. Este artigo explicará como usar compreensões de lista em Python, começando com uma explicação básica de como os loops for funcionam em Python.

For Loop em Python

Uma instrução for loop em Python itera sequencialmente sobre os membros de qualquer objeto, lista, string, etc. Em comparação com outras linguagens de programação, sua sintaxe é muito mais limpa e não requer a definição manual das etapas de iteração e o início da iteração. Embora haja maneiras de tornar seu comportamento igual ao de outras linguagens de programação (não serão abordadas neste artigo). Você também pode exercer algum controle sobre os loops for usando instruções como continue, break, pass etc. Abaixo está um exemplo simples de loop for em Python:

para x no intervalo (10):
imprimir (x)

O loop for acima imprimirá dez números começando em 0 e terminando em 9.

Compreensões de lista

A compreensão de lista nada mais é do que uma forma abreviada / concisa de escrever loops for multilinha em uma instrução de uma linha. O exemplo de compreensão de lista abaixo criará uma nova lista como [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] incluindo todos os valores de "x" nela.

números = [x para x no intervalo (10)]
imprimir (números)

Observe que a compreensão de lista sempre cria uma nova lista e não modifica os iteráveis ​​originais usados ​​na expressão. Uma expressão de compreensão de lista típica deve ter uma cláusula "for" e pode ser seguida por declarações condicionais "if" e "else". Sem usar uma compreensão de lista, o exemplo acima será escrito da seguinte maneira:

números = []
para x no intervalo (10):
números.anexar (x)
imprimir (números)

Desempenho e legibilidade

Compreensões de lista são mais rápidas do que loops para. No entanto, a menos que você esteja iterando em centenas de milhares de itens, não notará grandes melhorias de desempenho. Embora a compreensão de lista forneça uma maneira concisa de escrever loops, expressões complexas podem levar a uma legibilidade deficiente do código e maior detalhamento. É importante manter o código legível, a menos que atingir o desempenho máximo seja uma necessidade absoluta para o seu programa.

Exemplo: usando a sintaxe de compreensão de lista com dicionários e conjuntos

Um dicionário Python é uma coleção de elementos definidos em pares de valores-chave, enquanto um conjunto é uma coleção de valores únicos onde duplicatas não são permitidas. Compreensões de lista podem ser usadas com conjuntos e dicionários Python também. A sintaxe é um pouco diferente, em vez de envolver a expressão entre colchetes, você agora terá que usar colchetes. Você também obterá um novo dicionário / objeto definido em vez de uma nova lista.

dados = "cidade": "nova york", "nome": "john doe"
formatted_data = k: v.título () para k, v nos dados.Itens()
imprimir (formatted_data)

O exemplo acima irá converter valores de string para letras maiúsculas e minúsculas e criar um novo dicionário chamado “formatted_data”, cuja saída será: 'city': 'New York', 'name': 'John Doe'. Você também pode alterar o dicionário / definir no local especificando a variável de dicionário existente no lado esquerdo.

dados = "cidade": "nova york", "nome": "john doe"
dados = k: v.título () para k, v nos dados.Itens()
imprimir (dados)

Sem usar as compreensões de dicionário, o código ficaria assim:

dados = "cidade": "nova york", "nome": "john doe"
formatted_data =
para k, v em dados.Itens():
formatted_data [k] = v.título()
imprimir (formatted_data)

Como não há pares de valores-chave em conjuntos, uma compreensão de conjunto pode ser definida da mesma forma que uma compreensão de lista. A única diferença é o uso de chaves.

Exemplo: Vários Loops For em uma Compreensão de Lista

O exemplo de compreensão de lista mencionado acima é básico e usa uma única declaração "para". Abaixo está um exemplo que usa vários loops for e uma declaração condicional "if".

adjetivos = ["Disco", "Eoan", "Focal", "Artful"]
animais = ["Dingo", "Arminho", "Fossa", "Castor"]
codinomes = [x + "" + y para x em adjetivos para y em animais se y.começa com (x [0])]
imprimir (codinomes)

O código mostrará ['Disco Dingo', 'Eoan Ermine', 'Fossa Focal'] como saída. Os dois loops for passam por listas de “adjetivos” e “animais” e seus membros são unidos usando um espaço, apenas se a primeira letra de ambas as palavras for a mesma. Sem usar compreensões de lista, o código ficaria assim:

adjetivos = ["Disco", "Eoan", "Focal", "Artful"]
animais = ["Dingo", "Arminho", "Fossa", "Castor"]
codinomes = []
para x em adjetivos:
para y em animais:
se você.começa com (x [0]):
codinomes.anexar (x + "" + y)
imprimir (codinomes)

Exemplo: Compreensão de lista com cláusula if-else

O exemplo abaixo mostrará o uso de instruções if e else em compreensões de lista.

numero_lista = [1, 2, 3, 4]
outra_lista = [5, 6, 7, 8]
resultado = [Verdadeiro se (x + y)% 2 == 0 senão Falso para x em number_list para y em another_list]
imprimir (resultado)

Ao percorrer duas listas, a compreensão da lista acima verifica se a soma do par de elementos é par ou não. Executar o código acima mostrará [True, False, True, False, False, True, False, True, True, False, True, False, False, True, False, True] como saída. Sem usar a compreensão de lista, o código ficaria assim:

numero_lista = [1, 2, 3, 4]
outra_lista = [5, 6, 7, 8]
resultado = []
para x em number_list:
para y em outra_lista:
if (x + y)% 2 == 0:
resultado.anexar (verdadeiro)
senão:
resultado.anexar (falso)
imprimir (resultado)

Conclusão

Compreensões de lista fornecem uma boa maneira de escrever instruções de loop claras e concisas. No entanto, eles podem se tornar rapidamente complexos e difíceis de entender se vários loops e instruções condicionais forem usados. No final, chega ao nível de conforto de um programador, mas geralmente é uma boa ideia escrever código explícito, legível e fácil de depurar em vez de usar abreviações excessivas.

Como alterar os botões esquerdo e direito do mouse no PC com Windows 10
É normal que todos os dispositivos de mouse de computador sejam ergonomicamente projetados para usuários destros. Mas existem dispositivos de mouse di...
Emular cliques do mouse passando o mouse usando o mouse sem cliques no Windows 10
Usar um mouse ou teclado na postura errada de uso excessivo pode resultar em muitos problemas de saúde, incluindo tensão, síndrome do túnel do carpo e...
Adicione gestos do mouse ao Windows 10 usando essas ferramentas gratuitas
Nos últimos anos, os computadores e sistemas operacionais evoluíram muito. Houve um tempo em que os usuários tinham que usar comandos para navegar pel...