如何获取列表中项目的位置?
我正在遍历一个列表,想要在某个条件满足时打印出这个项目的索引。我该怎么做呢?
举个例子:
testlist = [1,2,3,5,3,1,2,1,6]
for item in testlist:
if item == 1:
print position
15 个回答
198
那下面这个怎么样呢?
print testlist.index(element)
如果你不确定要查找的元素是否真的在列表里,你可以先做一个初步检查,比如说
if element in testlist:
print testlist.index(element)
或者
print(testlist.index(element) if element in testlist else None)
还有一种“更符合Python风格”的方法,我个人不太喜欢,因为这样写的代码不太清晰,但有时候效率更高,
try:
print testlist.index(element)
except ValueError:
pass
302
嗯,有个答案里有个列表推导式,但现在不见了。
在这里:
[i for i,x in enumerate(testlist) if x == 1]
举个例子:
>>> testlist
[1, 2, 3, 5, 3, 1, 2, 1, 6]
>>> [i for i,x in enumerate(testlist) if x == 1]
[0, 5, 7]
更新:
好吧,你想要一个生成器表达式,那我们就来一个生成器表达式。这里是之前的列表推导式,用在一个循环里:
>>> for i in [i for i,x in enumerate(testlist) if x == 1]:
... print i
...
0
5
7
现在我们来构建一个生成器……
>>> (i for i,x in enumerate(testlist) if x == 1)
<generator object at 0x6b508>
>>> for i in (i for i,x in enumerate(testlist) if x == 1):
... print i
...
0
5
7
而且很巧妙的是,我们可以把它赋值给一个变量,然后从那里使用……
>>> gen = (i for i,x in enumerate(testlist) if x == 1)
>>> for i in gen: print i
...
0
5
7
想想我以前写FORTRAN的时候。