首页 > 解决方案 > python中将连续重复的列表元素打包到子列表中的函数

问题描述

我的意思是 :

Eg., l = [1, 1, 1, 2, 2, 3, 3, 4]
pack(l) -> [[1,1,1], [2,2], [3,3], [4]]

我想以一种非常基本的方式解决这个问题,因为我刚刚开始使用循环和列表方法。我已经寻找其他方法,但它们对我来说很难理解

标签: pythonpython-3.xlist

解决方案


您可以使用 groupby

from itertools import groupby

def pack(List):
    result = []
    for key,group in groupby(List):
         result.append(list(group))

    return result

l = [1, 1, 1, 2, 2, 3, 3, 4]
print(pack(l))

或单行:

l = [1, 1, 1, 2, 2, 3, 3, 4]
result = [list(group) for key,group in groupby(l)]
# [[1, 1, 1], [2, 2], [3, 3], [4]]

您还可以使用lambda来生成函数:

from itertools import groupby

l = [1, 1, 1, 2, 2, 3, 3, 4]

pack = lambda List: [list(group) for key,group in groupby(List)]
pack(l)

推荐阅读