lambda出人意料的结果

时间:2016-07-25 13:14:37

标签: python lambda

我有以下简单的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为真的所有数字值?

我确定有更好的方法可以做到,但我特别想尝试使用filter和lambda按照CodeAcademy单元来实现结果,所以我只是想了解发生了什么。

1 个答案:

答案 0 :(得分:0)

您只需要删除一个>,因此您的代码将是:

numbers = range(1,100)
print (list(numbers))
numbers_over_30 = filter(lambda x: x>30,numbers)   # here your error
print (list(numbers_over_30))