Python:如果in语句计算为true,则获取索引

时间:2013-08-01 14:12:38

标签: python performance indexing

我正在做一个简单的查找

if xo.st in sts:
    #...

如果条件满足,我需要获取sts中元素的索引(sts是列表或元组)。这需要很快(这是一个很大的列表)。对此最好的解决方案是什么?

4 个答案:

答案 0 :(得分:4)

怎么样:

if xo.st in sts:
    print sts.index(xo.st)

这将返回xo.st

sts的第一个索引

答案 1 :(得分:3)

首先想到的是

list.index(xo.st) 

答案 2 :(得分:3)

listtuple都有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