for
使用循环扩展 Tobias 的答案:
comp = [1, 2, 3]
m = max(comp)
for index in range(len(comp)):
if comp[index] == m:
# some action
由于索引从 0 开始,因此您不需要执行len(comp) + 1
. 我更喜欢在循环中使用索引for
而不是实际元素,因为它可以大大加快速度。有时在一个过程中,您可能需要特定元素的索引。然后,使用l.index(obj)
会浪费时间(即使只是微不足道的数量——对于更长的过程,这会变得乏味)。
这也假设每个过程(对于comp[index]
)都非常相似:相同的过程但具有不同的变量。如果您对每个索引都有显着不同的过程,这将不起作用。
但是,通过使用for index in range(len(l)):
,您已经有了索引,并且可以轻松地访问该项目l[index]
(连同由循环给出的索引)。
奇怪的是,Tobias 的实现似乎更快(我不这么认为):
comp = [1, 2, 3]
m = max(comp)
from timeit import timeit
def test1():
if comp[0] == m: return m
if comp[1] == m: return m
if comp[2] == m: return m
def test2():
for index in range(len(comp)):
if comp[index] == m: return m
print 'test1:', timeit(test1, number = 1000)
print 'test2:', timeit(test2, number = 1000)
回报:
test1: 0.00121262329299
test2: 0.00469034990534
对于更长的列表,我的实现可能会更快(但不确定)。但是,为此编写代码很乏味(对于使用重复的长列表if comp[n] == m
)。