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

Python中map函数针对函数列表的用法疑问

解析这段Python代码的执行逻辑

首先先把你的代码贴出来方便参考:

def multiply(x): return (x*x)
def add(x): return (x+x)
funcs = [multiply, add]
for i in range(5):
    value = list(map(lambda x: x(i), funcs))
    print(value)

先理清几个关键前提

  • multiply(x) 和 add(x) 是两个简单的函数:前者返回输入值的平方,后者返回输入值的两倍。
  • funcs = [multiply, add] 这个列表里存储的是函数对象本身,而不是函数调用后的结果。也就是说,这里的multiply是函数的引用,而不是multiply(某个值)的计算结果。

循环与map函数的执行过程

循环for i in range(5)会让i依次取0,1,2,3,4这五个值,每次循环里的核心是list(map(lambda x: x(i), funcs)),咱们逐个分析每个i的执行情况:

当i=0时

map函数会遍历funcs中的每个函数,把lambda x: x(i)应用到每个函数上:

  • 第一个元素是multiply:lambda中的x就是multiply,执行x(i)即multiply(0),结果是0*0=0
  • 第二个元素是add:执行add(0),结果是0+0=0
    最终得到列表[0, 0],打印输出。

当i=1时

  • multiply(1) 计算得1*1=1
  • add(1) 计算得1+1=2
    得到列表[1, 2],打印输出。

当i=2时

  • multiply(2) 计算得2*2=4
  • add(2) 计算得2+2=4
    得到列表[4, 4],打印输出。

当i=3时

  • multiply(3) 计算得3*3=9
  • add(3) 计算得3+3=6
    得到列表[9, 6],打印输出。

当i=4时

  • multiply(4) 计算得4*4=16
  • add(4) 计算得4+4=8
    得到列表[16, 8],打印输出。

总结map在这里的作用

你已经知道map是把第一个参数的函数应用到第二个参数的每一项,这里的特殊点在于:

  • map的第二个参数是函数列表,而不是普通的数值列表
  • 第一个参数的lambda函数lambda x: x(i),其实是接收一个函数x,然后调用这个函数并传入当前的i作为参数

所以整个过程就是,每次循环都让funcs里的两个函数,分别用当前的i作为输入执行一遍,把结果收集成列表后打印。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:30:31