0

假设我有一个 python list l=[1,2,3,4,5]。我想找到所有以满足 function 的元素开头的 x 元素列表,或者如果没有足够的项目f(e),则子列表将结束。l例如,假设f(e)is e%2==0x=3我想得到[[2,3,4],[4,5]].

有没有一种优雅或“pythonic”的方式来做到这一点?

4

2 回答 2

3
>>> 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]]
于 2013-02-18T11:13:40.687 回答
1

使用列表推导:

>>> 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]]
于 2013-02-18T12:13:53.413 回答