Eu tenho o seguinte código python simples
numbers = range(1,100)
print (list(numbers))
numbers_over_30 = filter(lambda x: x>>30,numbers)
print (list(numbers_over_30))
Eu crio uma lista de números de 1 a 99 e que funciona bem me dando
[1,2,3,4,5.....97,98,99]
a segunda lista deveria me dar
[31,32,33....97,98,99]
mas eu só tenho uma lista vazia []
.
Se eu mudar a função lambda, recebo como abaixo:
x>>5 gives me [32,33,34...97,98,99]
x>>4 gives me [16,17,18...97,98,99]
x>>3 gives me [8,9,10...97,98,99]
Alguém pode lançar alguma luz sobre o que a função lambda está fazendo? eu esperei isso numbers_over_30
consistiria em todos os valores de números para os quais x>>30
foi verdade?
Eu tenho certeza que existem maneiras melhores de fazer isso, mas eu estou tentando especificamente alcançar o resultado usando filtro e lambda por uma unidade da CodeAcademy, então estou apenas tentando entender o que está acontecendo.
Respostas:
0 para resposta № 1Você precisa apenas excluir um>, então seu código será:
numbers = range(1,100)
print (list(numbers))
numbers_over_30 = filter(lambda x: x>30,numbers) # here your error
print (list(numbers_over_30))