使用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
相关产品推荐
相关产品推荐

