Python 为什么在将map()与方法.append()一起使用时返回四个列表
我试图用方法Python 为什么在将map()与方法.append()一起使用时返回四个列表,python,python-3.x,list,Python,Python 3.x,List,我试图用方法append测试函数map,但得到了错误的输出 代码 预期产量 实际产量 map为输入序列中的每个对象返回一个输出对象。输入序列有4个对象,因此输出有4个对象。它们都是相同的,因为函数总是返回相同的数字\u tmp对象。要解决此问题,请停止在map中使用全局变量,内置变量将作用于iterable中的每个值。因此,您的函数应包括可应用于每个子列表的逻辑: 或者,您可以从标准库中使用: from statistics import mean res = list(map(mean, n
append
测试函数map
,但得到了错误的输出
代码
预期产量
实际产量
map
为输入序列中的每个对象返回一个输出对象。输入序列有4个对象,因此输出有4个对象。它们都是相同的,因为函数总是返回相同的数字\u tmp
对象。要解决此问题,请停止在map
中使用全局变量,内置变量将作用于iterable中的每个值。因此,您的函数应包括可应用于每个子列表的逻辑:
或者,您可以从标准库中使用:
from statistics import mean
res = list(map(mean, numbers))
为什么要将
numbers\u tmp
作为一个全局变量,然后忽略它的内容以支持map
返回的内容?不要在map
中使用副作用。只需使用一个循环和副作用。
[57.0, 58.2, 50.6, 27.2]
[
[57.0, 58.2, 50.6, 27.2],
[57.0, 58.2, 50.6, 27.2],
[57.0, 58.2, 50.6, 27.2],
[57.0, 58.2, 50.6, 27.2]
]
def mean_calculator(num_list):
return sum(num_list) / len(num_list)
res = list(map(mean_calculator, numbers))
print(res)
[57.0, 58.2, 50.6, 27.2]
from statistics import mean
res = list(map(mean, numbers))
numbers = [[34, 63, 88, 71, 29], [90, 78, 51, 27, 45], [63, 37, 85, 46, 22], [51, 22, 34, 11, 18]]
def mean_append(num_list):
return sum(num_list) / len(num_list)
print(list(map(mean_append, numbers)))