gpt4 book ai didi

python - 在 Python 中使用 map

转载 作者:太空宇宙 更新时间:2023-11-03 12:57:34 26 4
gpt4 key购买 nike

我正在尝试使用 map Python 函数(我知道我可以使用列表推导式,但在此示例中我被指示使用 map)来获取两行矩阵的行平均值。

我认为答案应该是这样的:

def average_rows2(mat):
print( map( float(sum) / len , [mat[0],mat[1]] ) )
average_rows2([[4, 5, 2, 8], [3, 9, 6, 7]])

现在,只有 sum 函数有效:

def average_rows2(mat):
print( map( sum , [mat[0],mat[1]] ) )
average_rows2([[4, 5, 2, 8], [3, 9, 6, 7]])

第一个问题是将 float() 添加到 sum 函数会产生错误:

TypeError: float() argument must be a string or a number

这很奇怪,因为结果列表的元素应该是整数,因为它成功计算了总和。

此外,将 /len 添加到 sum 函数会出现此错误:

TypeError: unsupported operand type(s) for /: 'builtin_function_or_method' and 'builtin_function_or_method'

对于这个错误,我尝试了 *//,它说没有一个是受支持的操作数类型。我不明白为什么这些都不支持。

也许这意味着 map 函数不采用复合函数?

最佳答案

第一个参数在传递给 map 之前必须先求值。这:

float(sum) / len

导致您出现各种错误,因为单独评估它没有任何意义(除非您隐藏了 sumlen,这将是不同的问题)。您正在尝试对一个内置函数求和然后除以另一个!因此,它不能成为一个论点。

相反,创建一个函数,例如:

lambda lst: float(sum(lst)) / len(lst)

这是一个带有单个参数的可调用对象,因此可以用作 map 的第一个参数,然后将其应用于第二个参数中的每个元素。您还可以使用常规函数,而不是匿名 lambda(如现在在 https://stackoverflow.com/a/34831192/3001761 中所示)。

关于python - 在 Python 中使用 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34831050/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com