-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