python list があるとしますl=[1,2,3,4,5]
。f(e)
function を満たす要素で始まるすべての x-element リスト、またはl
十分なアイテムがない場合は最後までのサブリストを見つけたいと思います。たとえば、f(e)
がe%2==0
で、x=3
を取得したいとします[[2,3,4],[4,5]]
。
これを行うためのエレガントまたは「pythonic」な方法はありますか?
>>> f = lambda e: e % 2 == 0
>>> x = 3
>>> l = [1, 2, 3, 4, 5]
>>> def makeSublists(lst, length, f):
for i in range(len(lst)):
if f(lst[i]):
yield lst[i:i+length]
>>> list(makeSublists(l, x, f))
[[2, 3, 4], [4, 5]]
>>> list(makeSublists(list(range(10)), 5, f))
[[0, 1, 2, 3, 4], [2, 3, 4, 5, 6], [4, 5, 6, 7, 8], [6, 7, 8, 9], [8, 9]]
リスト内包表記の使用:
>>> l = range(1,6)
>>> x = 3
>>> def f(e):
return e%2 == 0
>>> [l[i:i+x] for i, j in enumerate(l) if f(j)]
[[2, 3, 4], [4, 5]]