A compreensão de listas é uma maneira elegante de definir e criar uma lista em python. Podemos criar listas apenas como declarações matemáticas e em apenas uma linha. A sintaxe de compreensão de lista é mais fácil de entender.
A compreensão de uma lista geralmente consiste nestas partes:
Por exemplo :
lst = [x ** 2 para x no intervalo (1, 11) se x% 2 == 1]
aqui, x ** 2 é a expressão de saída,
intervalo (1, 11) é a sequência de entrada,
x é variável e
se x % 2 == 1 é parte do predicado.
Exemplo 1:
# Programa Python para demonstrar compreensão de listas em Python
# A lista abaixo contém o quadrado de todos os números ímpares do
# intervalo 1 a 10
odd_square = [x ** 2 for x in range(1, 11) if x % 2 == 1]
print (odd_square)
# para compreensão, a geração acima é igual a,
odd_square = []
for x in range(1, 11):
if x % 2 == 1:
odd_square.append(x**2)
print(odd_square)
# a lista abaixo contém potência de 2 de 1 a 8
power_of_2 = [2 ** x for x in range(1, 9)]
print(power_of_2)
# a lista abaixo contém primos e não primos no intervalo de 1 a 50
noprimes = [j for i in range(2, 8) for j in range(i*2, 50, i)]
primes = [x for x in range(2, 50) if x not in noprimes]
print(primes)
# lista para diminuir os personagens
print([x.lower() for x in ["A","B","C"]])
# lista que extrai o número
string = "my phone number is : 11122 !!"
print("\nExtracted digits")
numbers = [x for x in string if x.isdigit()]
print (numbers)
# Uma lista de lista para tabuada
a = 5
table = [[a, b, a * b] for b in range(1, 11)]
print("\nMultiplication Table")
for i in table:
print (i)
Resultado:
[1, 9, 25, 49, 81]
[1, 9, 25, 49, 81]
[2, 4, 8, 16, 32, 64, 128, 256]
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47]
['a', 'b', 'c']
Dígitos extraídos
['1', '1', '1', '2', '2']
Tabela de multiplicação
[5, 1, 5]
[5, 2, 10]
[5, 3, 15]
[5, 4, 20]
[5, 5, 25]
[5, 6, 30]
[5, 7, 35]
[5, 8, 40]
[5, 9, 45]
[5, 10, 50]
Depois de obter a lista, podemos obter uma parte dela usando o operador de fatiamento do python, que tem a seguinte sintaxe:
[start : stop : steps]
o que significa que o corte começará do início do índice
subirá até stop no paso steps.
O valor padrão de start é 0, a stop é o último índice da lista
e para step é 1
Assim, [:stop] dividirá a lista do início ao fim do índice e [start:] dividirá a lista do índice inicial até o final O valor negativo das etapas mostra o percurso da direita para a esquerda em vez de o percurso da esquerda para a direita. É por isso que [::-1] imprime a lista na ordem inversa.
Exemplo 2:
# Vamos primeiro criar uma lista para demonstrar o fatiamento
# lst contém todos os números de 1 a 10
lst =list(range(1, 11))
print (lst)
# a lista abaixo tem números de 2 a 5
lst1_5 = lst[1 : 5]
print (lst1_5)
# a lista abaixo tem números de 6 a 8
lst5_8 = lst[5 : 8]
print (lst5_8)
# a lista abaixo tem números de 2 a 10
lst1_ = lst[1 : ]
print (lst1_)
# a lista abaixo tem números de 1 a 5
lst_5 = lst[: 5]
print (lst_5)
# a lista abaixo tem números de 2 a 8 na etapa 2
lst1_8_2 = lst[1 : 8 : 2]
print (lst1_8_2)
# a lista abaixo tem números de 10 a 1
lst_rev = lst[ : : -1]
print (lst_rev)
# a lista abaixo tem números de 10 a 6 na etapa 2
lst_rev_9_5_2 = lst[9 : 4 : -2]
print (lst_rev_9_5_2)
Resultado:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[2, 3, 4, 5]
[6, 7, 8]
[2, 3, 4, 5, 6, 7, 8, 9, 10]
[1, 2, 3, 4, 5]
[2, 4, 6, 8]
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
[10, 8, 6]
Podemos usar a função filter para filtrar uma lista com base em alguma condição fornecida como uma expressão lambda como primeiro argumento e lista como o segundo argumento, exemplo dos quais é mostrado a seguir:
Exemplo 3:
import functools
# filtering odd numbers
lst = filter(lambda x : x % 2 == 1, range(1, 20))
print (list(lst))
# filtering odd square which are divisible by 5
lst = filter(lambda x : x % 5 == 0,
[x ** 2 for x in range(1, 11) if x % 2 == 1])
print (list(lst))
# filtering negative numbers
lst = filter((lambda x: x < 0), range(-5,5))
print (list(lst))
# implementing max() function, using
print (functools.reduce(lambda a,b: a if (a > b) else b, [7, 12, 45, 100, 15]))
Resultado:
[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
[25]
[-5, -4, -3, -2, -1]
100
Este artigo é uma contribuição de Utkarsh Trivedi. Escreva comentários se encontrar algo incorreto ou se quiser compartilhar mais informações sobre o tópico discutido acima.
Artigo escrito por GeeksforGeeks e traduzido por Acervo Lima de Python List Comprehension and Slicing.