1

我正在做一个简单的查找

if xo.st in sts:
    #...

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

4

4 回答 4

4

关于什么:

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

xo.st这将返回in的第一个索引sts

于 2013-08-01T14:17:12.930 回答
3

list并且tuple两者都有一个index方法,如果它在数据中,则返回值的索引,ValueError如果不存在则引发 a 。
如果你想要速度,你可能想要保留一个有序列表并进行二进制搜索 是关于此的先前 SO。

于 2013-08-01T14:18:49.283 回答
3

首先想到的是

list.index(xo.st) 
于 2013-08-01T14:17:18.263 回答
2

index方法存在于列表和元组中,是您所需要的。ValueError当值不在列表中时,它会引发 a 。如果这不是你想要的,你可以做这样的事情:

>>> 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
于 2013-08-01T14:24:09.963 回答