在python中,是否有一种简短的方式来编写for i in range(len(l)):
?
我知道我可以使用for i,_ in enumerate(l):
,但我想知道是否有另一种方式(没有_
)。
请不要说for v in l
,因为我需要索引(例如比较连续值l[i]==l[i+1]
)。
答案 0 :(得分:5)
如果您想比较连续元素,则不需要使用索引。您可以改为使用zip()
:
for el1, el2 in zip(l, l[1:]):
或者仍然使用enumerate()
:
for el2idx, el1 in enumerate(l[:-1], 1):
el2 = l[el2idx]
如果你真的必须生成只和索引,那么range(len(l))
足够短,没有更短的形式。
答案 1 :(得分:1)
您可以通过定义一个函数来缩短它:
def r(lst):
return range(len(lst))
然后:
for i in r(l):
...
短9个字符!
答案 2 :(得分:0)
有些用例需要迭代索引,但它们并不常见,以证明更多的succint语法。即使您在列表中找到重复项的示例,也可以在没有索引的情况下轻松(并且可以说更可读)完成。例如:
it = iter(items)
last = next(items, None)
for item in it:
if item == last:
print "Duplicate:", item
break
else:
last = item
else:
print "No duplicate found."
(您也可以像Martijn所示使用zip()
。)