将列表拆分为多个以1为标题的子列表

假设我有一个这样的列表:

lst = [1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0,
        1, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0,
        1, 0, 0, 0, 0, 0, 2, 0, 0]

我打算将它分成多个子列表,标题为 1:

new_lst = [[1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0],
           [1, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0],
           [1, 0, 0, 0, 0, 0, 2, 0, 0]]

这就是我现在渲染它的方式,效果很好。有没有更简单的方法来做到这一点?像 itertools 但是我现在想不出如何。

one_list = []

for i, j in enumerate(lst):
    if j == 1:
        one_list.append(i)

new_list = []
for i in range(len(one_list)-1):
    head = one_list[i]
    tail = one_list[i+1]
    new_list.append(flag[head:tail])

回答

more_itertools.split_before 会这样做

lst = list(more_itertools.split_before(lst, lambda x : x == 1))
# [[1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0], [1, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 2, 0, 0]]


以上是将列表拆分为多个以1为标题的子列表的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>