现在我正在循环跟踪我的索引
index = 0
for entry in longList:
if entry == 'foo':
print index
index += 1
有更好的方法吗?
答案 0 :(得分:18)
for index, entry in enumerate(longList):
if entry == 'foo':
print index
答案 1 :(得分:10)
使用enumerate()
内置功能。</ p>
for index, entry in enumerate(longList):
if entry == 'foo':
print index
但是,在您的具体情况下,您只需执行index = longList.index("foo")
编辑:如果你想在纯Python中尽可能快地找到多个匹配的索引,下面的代码应该可以解决这个问题:
indices = tuple(index for index, element in enumerate(longList) if element=='foo')
答案 2 :(得分:6)
我喜欢列表理解:)
[index for (index,entry) in enumerate(longList) if entry == 'foo']
答案 3 :(得分:5)
是的,最好的方法是这样做:
longList.index('foo')
答案 4 :(得分:3)
使用枚举会更好。
for ind,item in enumerate(longList):
if item == 'foo':
print ind
答案 5 :(得分:3)
如果您的列表非常长且静态,则应考虑使用查找表(实际上,使用条目作为键的索引列表字典)。第一次搜索后它几乎会收回成本,因为你目前总是遍历所有元素。
from collections import defaultdict
# Create and fill the table (only once or whenever the list changes)
lookupTable = defaultdict(list)
for index, entry in enumerate(longList):
lookupTable[entry].append(index)
# Search the list (as many times as you want)
indexes = lookupTable.get('foo')
# and you get either 'None' or a list of indexes '[1,10,20]'