Sen enumerate
kullanabilirsiniz:
alignment = [[a,b,c],[2,3,4],[q,w,e]]
for obj in alignment:
some code here to get previous object
Birlikte bunu nasıl biliyor Çoklu indekslemeden, sizden bir yineleme nesnesi oluşturmak için
iter()
işlevini kullanabilirsiniz.
next
ile ve her tekrarında sonraki elemanlarına erişimi (ikinci ucuna öğeden) r listesi:
next()
işleve ikinci argüman olarak
None
geçemiyor eğer bir zam olacağını
>>> l=[1,2,3,4]
>>> it=iter(l[1:])
>>> for i in l :
... print i,next(it,None)
...
1 2
2 3
3 4
4 None
NotStopIteration
error.You bir try-except
bildirimi ile de işleyebilirsiniz.
>>> for i,j in zip(l,l[1:]):
... print i,j
...
1 2
2 3
3 4
zip(l,l[1:])
size aşağıdaki öğe çiftleri verecektir: (python 3'de zip
) Eğer zip
işlevini kullanabilirsiniz kısa listeler için de
ve uzun listeleri itertools.izip()
function için
[(1, 2), (2, 3), (3, 4)]
ve Döngünün içinde i
geçerli öğe olarak j
sonraki öğe olacak veya j
geçerliolarak kullanabilirsiniz ! 563.210 :) önceki olacaktır
Bu, son öğenin ilk önce olması ve sondan sonra bir sonraki öğeyi bulamadığında bir hataya neden olacağını dikkate alır. –
@YannVernier Nitekim ve neden 'Yok' ile 'sonraki' işlevinden geçiyor. – Kasramvd
Neden * kısa listeler için *? Tüm durumlarda zip() 'çözümü en iyi seçenektir. Eğer 2.x iseniz, zip() 'tembel değildir,' itertools.izip() 'kullanarak çözümdür. –