2017-02-10 141 views
2

我想重新創建一些我在python中的ruby代碼(不能等到lambda支持ruby !!),並且我正在運行一個返回數組上的過濾器結果指示的問題(我想我我正確地說)。下面是一些示例代碼:python等價於ruby的`map.with_index`?

array = [200,100,150,500,25,650,175] 
res = filter(lambda x: x < 200, array) 
print res 
[100, 150, 25, 175] 

但我真的需要它來回報每相匹配的過濾器,並獲得元素的索引:

​​

有沒有一種簡單的方法在Python做到這一點?我正要嘗試numpy,但試圖安裝它時easyinstall變得很糟糕。

+0

我會考慮接受JulienD」因爲他和其他用戶都提供了相同的答案(減去一些小的解釋),但朱利安是第一位。 – deweyredman

回答

8

使用enumerate它產生含有原始值指標的元組:

>>> enumerate(array) 
<enumerate object at 0x7f4ad46d0190> 
>>> list(enumerate(array)) 
[(0, 200), (1, 100), (2, 150), (3, 500), (4, 25), (5, 650), (6, 175)] 

list comprehension結合:

>>> array = [200,100,150,500,25,650,175] 
>>> [i for i, x in enumerate(array) if x < 200] 
[1, 2, 4, 6] 
+0

謝謝,這就是它!我會在10分鐘內讓我回答這個問題。 – cashman04

+0

@ cashman04,不客氣。快樂的python編程:) – falsetru

+0

快速的問題:有沒有簡單的方法來調整這個,所以它返回索引,值的字典數組? – cashman04

6

[i for i,x in enumerate(array) if x < 200]