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

Python如何遍历嵌套列表各子列表生成2元组组合并汇总为单列表

问题根因
  • 存在冗余循环:你写的内层for j in range(len(my_list[i]))完全没有作用,itertools.combinations可以直接对整个子列表生成指定长度的所有组合,不需要额外遍历子列表元素。
  • 结果没有累加存储:每次循环都直接给twotuples重新赋值,之前子列表生成的组合全部被覆盖丢弃,最终只能拿到最后一次循环对应的最后一个子列表的组合结果。
修复后的代码

首先记得提前导入itertools模块,两种写法可选:

常规循环写法(可读性更高)

import itertools

def totwotuples(my_list):
    all_tuples = []
    for sub_list in my_list:
        # 生成当前子列表的2元素组合,追加到总列表
        all_tuples.extend(itertools.combinations(sub_list, 2))
    return all_tuples

列表推导式写法(更简洁)

import itertools

def totwotuples(my_list):
    return [comb for sub in my_list for comb in itertools.combinations(sub, 2)]
效果验证

用你给出的前两个子列表做测试:
输入:[['a','b','c','d'], ['a','c','d']]
输出结果和你预期的完全一致:
[('a', 'b'), ('a', 'c'), ('a', 'd'), ('b', 'c'), ('b', 'd'), ('c', 'd'), ('a', 'c'), ('a', 'd'), ('c', 'd')]

内容的提问来源于stack exchange,提问作者Mario R. Brichetto

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 02:36:03