基于条件在Python中拆分列表

3

我有一个类似这样的清单:

mylist = [2, 3, 4, 0, 0, 0, 6, 7, 8, 0, 4, 9, 0, 2, 0, 2, 0, 20, 0]

我需要移除0,并将其余连在一起的数字分组。

到目前为止,我已经做了这些,但是数字没有被分成组。

mylist = [2, 3, 4, 0, 0, 0, 6, 7, 8, 0, 4, 9, 0, 2, 0, 2, 0, 20, 0]
result = []
indexes = []
for i, j in enumerate(mylist):
    if j != 0:
        result.append(j)
        indexes.append(i)

print(result)
print(indexes)

我不知道从这里如何继续。

这就是我要找的结果:

result = [[2, 3, 4], [6, 7, 8], [4, 9], [2], [2], [20]]

感谢您的选择。
1个回答

6

使用 itertools.groupby

示例:

from itertools import groupby

mylist = [2, 3, 4, 0, 0, 0, 6, 7, 8, 0, 4, 9, 0, 2, 0, 2, 0, 20, 0]
result = [list(v) for k, v in groupby(mylist, lambda x: x!=0) if k]
print(result)

输出:

[[2, 3, 4], [6, 7, 8], [4, 9], [2], [2], [20]]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接