Bu, OP'nin sorması gerekenleri cevaplar , yani herhangi bir grup ( n-gram ) için genelleştirilmiş, ardışık elemanları (mükemmel SilentGhost yanıtı) karşılaştıran bir listeyi izleyin : 2, 3, ... :n
zip(*(l[start:] for start in range(0, n)))
Örnekler:
l = range(0, 4) # [0, 1, 2, 3]
list(zip(*(l[start:] for start in range(0, 2)))) # == [(0, 1), (1, 2), (2, 3)]
list(zip(*(l[start:] for start in range(0, 3)))) # == [(0, 1, 2), (1, 2, 3)]
list(zip(*(l[start:] for start in range(0, 4)))) # == [(0, 1, 2, 3)]
list(zip(*(l[start:] for start in range(0, 5)))) # == []
açıklamalar:
l[start:] dizinden başlayarak bir liste / jeneratör oluşturur start
*listveya *generator: tüm öğeleri zipyazılmış gibi çevreleme işlevine geçirirzip(elem1, elem2, ...)
Not:
AFAIK, bu kod olabildiğince tembel. Test edilmedi.