python - 列出给定长度的分组
问题描述
我正在尝试查找列表的所有可能分组,以便结果列表具有指定的长度,这是一个示例:
group([2,3,5,6,8], length=3)
会给
[[2,[3,5],[6,8]], [[2,3],5,[6,8]], [2,3,[5,6,8]], ...
解决这个问题的最佳方法是什么?
解决方案
试试这个递归解决方案,警告:如果你的列表变大,这将成倍增长!此外,这将有一些重复,因为订单不同。
from itertools import permutations
master = []
def group(l, num, res=[]):
if num == 1:
res.append(l)
master.append(res)
return
for i in range(len(l)-num + 1):
firstgroup = list({e[:i+1] for e in permutations(l)})
for each in firstgroup:
myres = res[:]
myres.append(list(each))
lcp = l[:]
for j in each:
lcp.remove(j)
group(lcp, num-1, myres)
推荐阅读
- javascript - svg d3js .drag(...).origin 不是函数
- batch-file - 将参数作为文件的模式传递
- mysql - MySqlException:对于带有游标的存储过程,子查询返回多于 1 行
- json - Angular 发布请求失败,错误为 500
- vba - VBA 填充名称
- html - 如何使弹性项目的高度随内容扩展并阻止它溢出?
- wordpress - 如何将打开的图形元标记添加到 WordPress wp-login 页面?
- node.js - 具有 ASG 和 ELB (bitbucket) 的 AWS CD/CI 管道
- java - 来自 Keycloak 的 JWT 访问令牌的 Java 离线验证
- c# - 在没有 foreach 的情况下迭代 JObject