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

如何让Python函数支持任意数量列表的动态嵌套遍历

解决任意数量列表的嵌套遍历求和问题

这问题我之前也碰到过,自己硬写嵌套循环肯定不现实(总不能写无限层吧),其实Python标准库的itertools.product就是干这个的,完美匹配你的需求!

实现思路

原来的两层嵌套循环,本质上是在取两个列表的笛卡尔积(也就是所有元素的组合),然后对每个组合求和。对于任意数量的列表,我们只需要用itertools.product生成所有列表的笛卡尔积,再对每个组合求和打印即可。

代码实现

import itertools

def func(*args):
    # 生成所有列表的笛卡尔积,每个元素是一个包含各列表元素的元组
    for combo in itertools.product(*args):
        # 对元组里的元素求和并打印
        print(sum(combo))

示例验证

比如传入3个列表:

listA = [1, 2]
listB = [3, 4]
listC = [5, 6]
func(listA, listB, listC)

输出结果就是:

9
10
10
11
10
11
11
12

完全对应三层嵌套循环for i in listA: for j in listB: for k in listC: print(i+j+k)的结果。

如果只传2个列表,效果和你原来的函数完全一致;传4个列表的话,自动变成四层循环求和,完全不需要修改代码。

手动实现(不用标准库的递归方式)

如果不想依赖itertools,也可以用递归的方式实现,核心思路是逐层拆解列表:

def func(*args):
    def recursive_helper(current_sum, remaining_lists):
        if not remaining_lists:
            print(current_sum)
            return
        # 遍历当前第一个列表的所有元素
        for num in remaining_lists[0]:
            # 递归处理剩下的列表,累加当前元素
            recursive_helper(current_sum + num, remaining_lists[1:])
    
    recursive_helper(0, args)

这个版本同样支持任意数量的列表,逻辑是从第一个列表开始,逐个元素累加,直到处理完所有列表,然后打印总和。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 07:37:49