在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))'太長比較我如何經常使用它。我不喜歡它非常長。 –