You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python生成元素全排列的最大长度为K的分组列表?

解决Python列表的全排列分组问题(子列表最大长度为2)

你需要的是对原列表的所有元素排列进行分组,要求子列表的最大长度为2对吧?确实permutations函数是很好的起点,只要再加上一步分割逻辑就能得到你想要的结果。

实现思路

  • 先用permutations生成原列表的所有全排列,这样就能覆盖元素的所有顺序可能性;
  • 对每个全排列结果,按最大长度2的规则分割成子列表,比如把(A,B,C)分割为[A,B], [C],把(C,A,B)分割为[C,A], [B];
  • 收集所有分割后的分组列表,就是最终的目标结果。

完整代码示例

import itertools

# 定义原列表和最大分组长度
a = ['A', 'B', 'C']
max_group_len = 2

# 生成所有符合要求的分组列表
final_result = []
# 遍历所有元素的全排列
for perm in itertools.permutations(a):
    # 按最大长度分割当前排列
    grouped_list = [list(perm[i:i+max_group_len]) for i in range(0, len(perm), max_group_len)]
    final_result.append(grouped_list)

# 打印结果
for group in final_result:
    print(group)

输出结果

运行代码后会得到你期望的所有分组:

[['A', 'B'], ['C']]
[['A', 'C'], ['B']]
[['B', 'A'], ['C']]
[['B', 'C'], ['A']]
[['C', 'A'], ['B']]
[['C', 'B'], ['A']]

补充说明

如果你的原列表长度N更大(比如N=4),这个逻辑也同样适用——permutations会生成所有4元素的排列,然后分割成最多2个元素的子列表(比如(A,B,C,D)会被分割为[A,B], [C,D]),完全满足你的需求。

内容的提问来源于stack exchange,提问作者LMB

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:42:27