Introdução à Compreensão de Lista Python

A compreensão da lista Python é outra maneira de criar listas usando uma operação de iteração. Funciona da mesma maneira que um loop, mas o LC é usado especificamente para retornar listas. As compreensões de lista têm expressões entre colchetes, como a criação de uma lista normal, a expressão será executada para todos os elementos.

A compreensão de lista é muito útil na ciência de dados, onde é possível ler listas / filtrar nomes de colunas / remover itens de listas etc. Embora possamos usar loops e funções lambda para executar alguma ação, a compreensão de lista fornece uma maneira elegante e simples de representar a mesma.
A compreensão da lista pode ser usada para substituir os métodos map (), reduzir () e filter ().
A compreensão da lista é como a Teoria dos Conjuntos das aulas do ensino médio.

Exemplo:

( x: x is a natural number greater than 15 )
( x: x is a vowel in word 'Data Science', x is a vowel )

Vamos criar uma lista de compreensão para as duas declarações acima.

(x for x in range(0, 20) if x>15) (x for x in 'Data Science' if x in ('a', 'e', 'i', 'o', 'u'))

Resultado:

(16, 17, 18, 19) ('a', 'a', 'i', 'e', ​​'e')

A compreensão da lista é fácil de entender e implementar. Basicamente, eles são criados em tabelas. Há três coisas a serem consideradas ao escrever a sintaxe para compreensão de listas.

  1. Parâmetro para saída
  2. O iterável
  3. Condições

A sintaxe pode ter duas das opções acima ou três acima como uma sintaxe para a compreensão da lista.

Sintaxe:

(output parameter | The Iterable)
(output Parameter | The Iterable | Condition )

Exemplos de compreensão da lista Python

Aqui discutiremos como usar a compreensão de lista usando python. Veremos os exemplos de uma maneira diferente, à medida que o executaremos usando o loop for e, em seguida, criaremos o mesmo usando a compreensão da lista.

Exemplo # 1: Encontrando os Quadrados Perfeitos

Aqui estão exemplos de quadrados perfeitos com diferentes condições, dados abaixo:

1. Com for Loop

for i in range(1, 30):
if int(i**0.5)==i**0.5:
print(i)

2. Usando Compreensões de Lista

(x for x in range(1, 30) if int(x**0.5)==x**0.5)

Resultado:

Exemplo # 2: obtenha apenas consoantes de uma sentença

Aqui, tomaremos uma sentença arbitrária e tentaremos obter consoantes na sentença como nossa saída.

1. Usando o loop For

def consonants_for(sentence):
vowels = 'aeiou'
consonants = () for x in sentence:
if x not in vowels:
consonants.append(x)
return ''.join(consonants)
sentence = 'we are studying list comprehensions'
print("With For Loop : " + consonants_for(sentence))

Resultado:

Com para loop: wr stdyng lst cmprhnsns

2. Usando a compreensão da lista

def consonants_lc(sentence):
vowels = 'aeiou'
return ''.join(( x for x in sentence if x not in vowels))
sentence = 'we are studying list comprehensions'
print("Using List Compr: " + consonants_lc(sentence))

Resultado:

Usando a lista Compr: wr stdyng lst cmprhnsns

Exemplo # 3: Criando um dicionário a partir de duas listas diferentes

Aqui estão exemplos de dicionário com diferentes condições, dados abaixo:

1. Usando o loop For

def dict_for(keys, values):
dictionary = ()
for i in range(len(keys)):
dictionary(keys(i)) = values(i) return dictionary
Movie = ('RDB', 'Wanted', 'DDLG', 'Sholay', 'War', ) Actor = ('Aamire', 'Salman', 'SRK', 'Amitabh', 'Hritik') print("FOR-loop result: " + str(dict_for(Movie, Actor)))

Resultado:

Resultado do loop FOR: ('RDB': 'Aamire', 'Wanted': 'Salman', 'DDLG': 'SRK', 'Sholay': 'Amitabh', 'War': 'Hritik')

2. Usando a compreensão da lista

def dict_lc(keys, values):
return ( keys(i) : values(i) for i in range(len(keys)) )
Movie = ('RDB', 'Wanted', 'DDLG', 'Sholay', 'War', ) Actor = ('Aamire', 'Salman', 'SRK', 'Amitabh', 'Hritik') print("LC result : " + str(dict_lc(Movie, Actor)))

Resultado:

Resultado da LC: ('RDB': 'Aamire', 'Procura-se': 'Salman', 'DDLG': 'SRK', 'Sholay': 'Amitabh', 'Guerra': 'Hritik')

Benefícios da Compreensão de Lista Python

As compreensões de lista executam a mesma tarefa, mas de uma maneira diferente!

A compreensão da lista tem muitas vantagens sobre o loop e outros métodos. Alguns dos benefícios são os seguintes:

  1. As compreensões de lista são fáceis de entender e tornam o código elegante. Podemos escrever o programa com expressões simples.
  2. As compreensões de lista são muito mais rápidas do que para loop e outros métodos, como um mapa. (O mesmo é explicado no exemplo abaixo:

Tomaremos o exemplo 1 como referência e calcularemos o tempo gasto por diferentes métodos para executar a mesma função. Primeiro, veremos o tempo gasto pelo “for loop” e, em seguida, o tempo gasto pelo método map () e, finalmente, veremos o tempo gasto pelas compreensões da lista.

Uma tabela mostra o tempo gasto pelas diferentes técnicas.

1. Para Loop

Exemplo usando o loop for fornecido abaixo:

Código:

def perf_square(x):
output = () for i in x:
if int(i**0.5)==i**0.5:
output.append(i)
return output
%timeit perf_square(range(1, 30))

2. Método do mapa

Exemplo usando o método de mapa fornecido abaixo:

Código:

def perf_square_map(x):
return map(lambda i: i**0.5==i**0.5, x)
%timeit perf_square_map(range(1, 30))

3. Compreensões da lista

Exemplo usando a compreensão da lista fornecida abaixo:

Código:

def perf_square_lc(x):
return (i**0.5 == i**0.5 for i in x) %timeit perf_square_lc(range(1, 30))

Resultado:

MétodoTempo
For loop787 ns
Método Map ()518 ns
Compreensões da lista276 ns

O tempo de execução claramente da compreensão da lista é 2, 85 vezes mais rápido que o loop for e 1, 87 vezes mais rápido que o método map. A compreensão da lista deixa para trás outros métodos com uma grande margem. Poderia haver especulações, por que não usamos apenas LC em todos os lugares, e não loops? O LC é mais rápido na maioria dos casos e pode substituir os loops em quase 80% dos casos. Mas não podemos substituir loops, há alguns casos em que temos um bom número de condições e as classes são aninhadas em um loop. Nesses casos, o uso de LC pode ser bastante complicado e inviável também. É melhor fazer loops nessas situações. Embora se possa usar a compreensão da lista em loops para substituir outros por loops. Isso diminuirá o tempo de execução e manterá a facilidade de uso do código.

  • Podemos aninhar várias condições em uma compreensão de lista.
  • LC pode executar manipulação de múltiplas variáveis.
  • Não há necessidade de fornecer um comando separado para obter a saída.
  • A compreensão da lista reduz a complexidade do código.
  • As compreensões de lista são eficientes.

Conclusão

As compreensões de lista são usadas para criar listas a partir do processo iterativo. A compreensão da lista é fácil de entender / implementar e torna o código elegante. A compreensão da lista é compacta e fácil de usar.

Discutimos a sintaxe para compreensão de lista, juntamente com alguns bons exemplos perspicazes. Por fim, escrevemos um programa para obter o tempo de cada método. Concluímos que o LC é 2, 85 vezes mais rápido que o loop for e 1, 87 vezes mais rápido que o método map ().

Artigos recomendados

Este é um guia para a compreensão da lista do Python. Aqui discutimos os benefícios da compreensão da lista python, juntamente com a sintaxe e os exemplos com diferentes condições. Você também pode consultar os seguintes artigos para saber mais:

  1. Construtor em Java
  2. Classificação em Java
  3. Construtor em Java
  4. JCheckBox em Java
  5. Guia de classificação em c # com exemplos
  6. Função de classificação em Python com exemplos
  7. Loops no VBScript com exemplos
  8. Exemplos para implementar a caixa de seleção no Bootstrap