我正在做一个简单的查找
if xo.st in sts:
#...
如果条件满足,我需要获取sts中元素的索引(sts是列表或元组)。这需要很快(这是一个很大的列表)。对此最好的解决方案是什么?
答案 0 :(得分:4)
怎么样:
if xo.st in sts:
print sts.index(xo.st)
这将返回xo.st
sts
的第一个索引
答案 1 :(得分:3)
首先想到的是
list.index(xo.st)
答案 2 :(得分:3)
list
和tuple
都有index
方法,如果数据位于数据中,则会返回值的索引,如果不存在,则会引发ValueError
。
如果你想要速度,你可能想要保留一个有序列表并执行binary search
Here之前是关于此事的SO。
答案 3 :(得分:2)
列表和元组中的index
方法就是您所需要的。
当值不在列表中时,它会引发ValueError
。
如果这不是你想要的,你可以做这样的事情:
>>> def get_index(value, sequence):
... try:
... return sequence.index(value)
... except ValueError:
... return None
...
>>> l = [1,2,3,4,5]
>>> print get_index(1, l)
0
>>> print get_index(2, l)
1
>>> print get_index(9, l)
None