2012-08-13 101 views
4

好的,在這裏我有另外一個問題,我需要在列表中找到\n的位置。Python列表中的 n索引

list = ['abc', '\n', 'def', 'ghi', '\n', 'jkl'] 

所以,我需要從列表中獲取所有'\ n'條目的位置。

我用

a=list.index('\n') 

,但只得到了一個價值爲 '1'。如何獲得這兩個職位?

例如我將得到的列表,包括「\ N」

位置=的位置[「1」,「4」]

「1」表示的\ n第一位置列表和「4」表示第二列表中的第四位。

+4

請不要命名變量'list',因爲這會影響內置'list',這通常是一件壞事。 – ThiefMaster 2012-08-13 09:40:32

回答

11

你需要迭代元素。這可以通過使用列表理解和enumerate的指標很容易做到:

indexes = [i for i, val in enumerate(list) if val == '\n'] 

演示:

>>> lst = ['abc', '\n', 'def', 'ghi', '\n', 'jkl'] 
>>> [i for i, val in enumerate(lst) if val == '\n'] 
[1, 4] 
4
[i for i, x in enumerate(l) if x == "\n"] 
# => [1, 4] 

別叫列表list,因爲這是一個內置函數。

0

要查找與多次出現一個列表中的項目的指標,下面的代碼應該工作

print [i for i in range(len(list)) if list[i] == '\n'] 

在這裏,我已經使用list,因爲它拍攝於你的問題,但不使用關鍵字作爲變量。

+0

這會起作用,但是你不認爲使用'enumerate()'的答案看起來更好嗎? – 2012-08-13 10:12:35

+0

@gnibbler是枚舉絕對是一個很好的解決方案。我只是給出了一種不同的方式來解決這個問題,我認爲這也是一個很好的解決方案。 – Srijan 2012-08-13 10:39:14

+0

[enumerate](http://docs.python.org/library/functions.html#enumerate)的定義看起來相同。 – Srijan 2012-08-13 10:43:15