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.
0 comentários:
Postar um comentário