2012-08-13 49 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