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

如何用Python循环获取三个列表的所有可能组合

解决方案

你可以用itertools.combinations生成所有非空的列表组合,再逐个拼接组合内的列表,完全匹配你需要的结果。具体代码如下:

import itertools

list_a = [1, 2]
list_b = [3, 4]
list_c = [5, 6]

# 将三个列表统一存入一个列表中
all_lists = [list_a, list_b, list_c]

# 遍历所有非空组合(长度从1到3)
for length in range(1, len(all_lists)+1):
    # 生成当前长度的所有不重复组合
    for combo in itertools.combinations(all_lists, length):
        # 拼接组合内的列表
        new_list = []
        for lst in combo:
            new_list.extend(lst)
        # 打印结果,也可存入列表备用
        print(new_list)

运行后输出结果:

[1, 2]
[3, 4]
[5, 6]
[1, 2, 3, 4]
[1, 2, 5, 6]
[3, 4, 5, 6]
[1, 2, 3, 4, 5, 6]

如果需要把所有结果收集到一个列表中,可修改为:

import itertools

list_a = [1, 2]
list_b = [3, 4]
list_c = [5, 6]

all_lists = [list_a, list_b, list_c]
result = []

for length in range(1, len(all_lists)+1):
    for combo in itertools.combinations(all_lists, length):
        combined = []
        for lst in combo:
            combined.extend(lst)
        result.append(combined)

print(result)

补充说明

  • itertools.combinations生成的组合是不重复且保持原列表顺序的,正好对应你要求的“顺序无关”(不会出现list_b+list_a这类反向拼接的情况)。
  • 用extend拼接列表比直接用+更高效,尤其是当列表元素较多时;如果追求代码简洁,也可以用sum(combo, [])替代循环拼接,但这种方式在列表规模较大时性能会下降。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 15:00:49