2013-02-22 34 views
1

我有列表這樣的:Python:如何搜索嵌套循環的第一列?

[ 
    [1, 37, 79, 164, 155, 32, 87, 39, 113, 15, 18, 78, 175, 140, 200, 4, 160, 97, 191, 100, 91, 20, 69, 198, 196], 
    [2, 123, 134, 10, 141, 13, 12, 43, 47, 3, 177, 101, 179, 77, 182, 117, 116, 36, 103, 51, 154, 162, 128, 30], 
    [3, 48, 123, 134, 109, 41, 17, 159, 49, 136, 16, 130, 141, 29, 176, 2, 190, 66, 153, 157, 70, 114, 65, 173, 104, 194, 54] 
] 

我想找到其中搜索值在第一列的索引列表。

例如,如果我搜索,它應該返回我1爲位於第一列在列表的索引1。

我如何在python中實現這一點?

回答

5
>>> [i for i, row in enumerate(data) if row[0] == 2] 
[1] 
>>> data = [ 
    [1, 2, 3], 
    [2, 3, 4], 
    [1, 3, 5], 
    [2, 6, 8] 
] 
>>> [i for i, row in enumerate(data) if row[0] == 2] 
[1, 3] 
+0

它可以更快嗎?對於長長的清單,這個解決方案不會有效。 – Sanjivani 2013-02-22 08:26:06

+0

@Sanjivani:我不明白爲什麼這樣做效率不高 - 沒有辦法找到每一場比賽都沒有依次通過每一行。 – Eric 2013-02-22 08:30:22

+0

@Sanjivani比只檢查每個列表的第一項更快? – 2013-02-22 08:30:28