在Python中,有写入for i in range(len(l)):
短方法?短关于 '对于i在范围(1,LEN(a))的:' 在python
我知道我可以使用for i,_ in enumerate(l):
,但我想知道是否有另一种方法(没有_
)。
请不要说for v in l
,因为我需要的指数(例如比较连续值l[i]==l[i+1]
)。
在Python中,有写入for i in range(len(l)):
短方法?短关于 '对于i在范围(1,LEN(a))的:' 在python
我知道我可以使用for i,_ in enumerate(l):
,但我想知道是否有另一种方法(没有_
)。
请不要说for v in l
,因为我需要的指数(例如比较连续值l[i]==l[i+1]
)。
你可以把它缩短了通过定义一个函数:
def r(lst):
return range(len(lst))
然后:
for i in r(l):
...
这是9个字符!
如果你想比较连续元素,你并不需要使用索引。您可以使用zip()
代替:
for el1, el2 in zip(l, l[1:]):
或者使用enumerate()
反正:
for el2idx, el1 in enumerate(l[:-1], 1):
el2 = l[el2idx]
如果你真的必须产生只是和索引,然后range(len(l))
足够短,有不短的形式。
你认为它应该存在一个较短的形式来获得指数? –
@CarlosPinzón:没有,在大多数情况下,你并不真的需要使用'范围()',通常有更好的选择。 –
通常有比使用指数更好的方法,正如Martijn在这里所展示的。如果你确实需要更短的方法,定义一个函数:'def indices(l):return range(len(l))' –
有对于需要遍历指标使用情况,但他们不那么普遍,足以支持一个更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."
(也可以使用如zip()
已的Martijn所示)
'为i的范围(LEN(1))'足够短。 – vaultah
有没有写'for'的简短方法? ;) –
@EllaShar来吧,这只是'范围(LEN(1))'太长比较我如何经常使用它。我不喜欢它非常长。 –