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

使用Python map函数时传入的函数未生效,rst2列表为空的原因

问题原因与解决办法

核心原因

map()函数返回的是惰性迭代器,它不会立即执行传入的函数a,只有当你主动遍历这个迭代器时,才会逐个调用函数处理列表中的元素。你当前仅将map对象赋值给变量a,但没有触发遍历操作,所以函数a一次都没执行,rst2自然保持为空。

另外,函数里不需要给rst2加全局声明——因为rst2是可变类型(列表),函数内部直接修改它的内容不需要global关键字,你之前的全局变量操作其实是多余的,问题不在这。

解决方法

方法1:将map对象转为列表,触发迭代

修改代码如下:

rst2 = []
def a(n):
    rst2.append(1)  # append返回None,没必要return

list(map(a, [2, 2]))  # 转成列表,触发函数执行

print(rst2)  # 输出: [1, 1]

方法2:用for循环遍历map对象

rst2 = []
def a(n):
    rst2.append(1)

a_map = map(a, [2, 2])
for _ in a_map:  # 遍历迭代器,触发函数执行
    pass

print(rst2)  # 输出: [1, 1]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 19:45:30