Ruby'nin each_slice(count)
ait piton eşdeğer nedir (sayım)?
Her yineleme için listeden 2 öğe almak istiyorum.
[1,2,3,4,5,6]
için Gibi ilk iterasyonda 1,2
ve daha sonra 5,6
3,4
işlemek istiyorum.
Tabaka dizin değerlerini kullanarak dolambaçlı bir yol var. Ama bunu doğrudan yapmak için doğrudan bir işlev mi yoksa bir yol mu var?Ruby'nin each_slice Python eşdeğer
from itertools import izip_longest
def grouper(n, iterable, fillvalue=None):
"grouper(3, 'ABCDEFG', 'x') --> ABC DEF Gxx"
args = [iter(iterable)] * n
return izip_longest(fillvalue=fillvalue, *args)
Kullanım böyle: Orfoz denilen itertools documentation bunun için bir recipe vardır
mark'ın cevabı, sorunuzda sağladığınız özellikleri tam olarak karşılar. Bununla birlikte, belirttiği davranış, ruby'nin her_slice'den saptığını not etmek önemlidir: Son dilim kalandan daha kısa ise, doluluk değeri ile doldurulur, oysa ruby'nin her_slice'sinde sadece kısaltılmış bir dizidir. Bu kısaltılmış liste/yinelenen davranışı istiyorsanız, Mark'ın cevabı işe yaramaz. – bwv549