我有以下简单的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单元来实现结果,所以我只是想了解发生了什么。
答案 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))