python - python中将连续重复的列表元素打包到子列表中的函数
问题描述
我的意思是 :
Eg., l = [1, 1, 1, 2, 2, 3, 3, 4]
pack(l) -> [[1,1,1], [2,2], [3,3], [4]]
我想以一种非常基本的方式解决这个问题,因为我刚刚开始使用循环和列表方法。我已经寻找其他方法,但它们对我来说很难理解
解决方案
您可以使用 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)
推荐阅读
- python - 将文件写入pdf时的Python问题
- php - 未从 Slack Slash Commands API 接收有效负载
- r - 使用更新、删除或更改表时如何删除 sqldf 中的警告
- nativescript - Nativescript iOS 应用程序未在设备上运行
- javascript - 添加css后没有出现react-leaflet
- mysql - MySQL 在获取相关值的同时旋转表
- flutter - 我想修改颤振的工厂,使其在点击时看起来像下图
- flutter - 在颤振中,当我添加图片的 URL 时,asset.network() 不起作用,手机什么也没显示
- c# - Visual Studio 自动在本地文件夹中创建枚举文件
- dictionary - Vim E78 未知标记。当我试图映射