-1
我有以下简单的Python代码拉姆达意想不到的结果
numbers = range(1,100)
print (list(numbers))
numbers_over_30 = filter(lambda x: x>>30,numbers)
print (list(numbers_over_30))
我创建的数字从1到99的列表和工作正常给我
[1,2,3,4,5.....97,98,99]
第二列表应该给我
[31,32,33....97,98,99]
但我只得到一个空的列表[]
。
如果我改变lambda函数,我得到如下:
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]
任何人都可以摆脱什么lambda函数做一些轻?我预计numbers_over_30
将包含x>>30
为真的所有数值。
我确定有更好的方法来做到这一点,但我特别试图通过CodeAcademy单元使用过滤器和lambda来实现结果,所以我只是想了解发生了什么。
你的变量称为'numbers_over_30'但过滤无关这一点。 '>>'是一个按位操作。 – TigerhawkT3
'>>'是一个二进制移位操作。它过滤掉所有少于30位的数字。 –
我投票结束为一个错字。如果完全是这样,你可以删除问题。 – TigerhawkT3