4 回答
![?](http://img1.sycdn.imooc.com/5333a1bc00014e8302000200-100-100.jpg)
TA贡献1876条经验 获得超7个赞
>>> ["foo", "bar", "baz"].index("bar") 1
注意事项如下
index
list
list.index
>>> print(list.index.__doc__)L.index(value, [start, [stop]]) -> integer -- return first index of value.Raises ValueError if the value is not present.
列表长度的线性时间复杂度
index
index
l.index(999_999, 999_990, 1_000_000)
l.index(999_999)
>>> import timeit>>> timeit.timeit('l.index(999_999)', setup='l = list(range(0, 1_000_000))', number=1000)9.356267921015387 >>> timeit.timeit('l.index(999_999, 999_990, 1_000_000)', setup='l = list(range(0, 1_000_000))', number=1000)0.0004404920036904514
只返回 第一场比赛对其论点
index
>>> [1, 1].index(1)0>>> [i for i, e in enumerate([1, 2, 1]) if e == 1][0, 2]>>> g = (i for i, e in enumerate([1, 2, 1]) if e == 1) >>> next(g)0>>> next(g)2
index
index
抛出列表中不存在的if元素。
index
ValueError
>>> [1, 1].index(2)Traceback (most recent call last): File "<stdin>", line 1, in <module>ValueError: 2 is not in list
先检查一下 item in my_list
(清洁、可读的方法),或 包好 index
打电话 try/except
捕获块 ValueError
(可能更快,至少当要搜索的列表很长时,并且项目通常是存在的。)
![?](http://img1.sycdn.imooc.com/533e4d470001a00a02000200-100-100.jpg)
TA贡献1815条经验 获得超6个赞
>>> help(["foo", "bar", "baz"])Help on list object:class list(object) ... | | index(...) | L.index(value, [start, [stop]]) -> integer -- return first index of value |
![?](http://img1.sycdn.imooc.com/54584dd900014f6c02200220-100-100.jpg)
TA贡献1820条经验 获得超2个赞
enumerate()
:
for i, j in enumerate(['foo', 'bar', 'baz']): if j == 'bar': print(i)
index()
enumerate()
[i for i, j in enumerate(['foo', 'bar', 'baz']) if j == 'bar']
itertools.count()
from itertools import izip as zip, count # izip for maximum efficiency[i for i, j in zip(count(), ['foo', 'bar', 'baz']) if j == 'bar']
enumerate()
:
$ python -m timeit -s "from itertools import izip as zip, count" "[i for i, j in zip(count(), ['foo', 'bar', 'baz']*500) if j == 'bar']"10000 loops, best of 3: 174 usec per loop $ python -m timeit "[i for i, j in enumerate(['foo', 'bar', 'baz']*500) if j == 'bar']"10000 loops, best of 3: 196 usec per loop
![?](http://img1.sycdn.imooc.com/545865890001495702200220-100-100.jpg)
TA贡献2036条经验 获得超8个赞
indexes = [i for i,x in enumerate(xs) if x == 'foo']
添加回答
举报