-2

我最近发现存在赋值表达式。我想重构我的一些代码以利用它们。我想使用它的大多数地方都相对容易转换。

但是,我不确定用于此特定功能的语法。functools.reduce有没有办法可以用赋值表达式代替我的用法?

from functools import reduce

def get_average(xs):
    """
    This function takes in a list of nx3 lists and returns the average
    along each column, returning a 3 length list.
    """
    return [
        x / len(xs)
        for x in reduce(
            lambda acc, x: [sum(z) for z in zip(acc, x)],
            xs,
            [0, 0, 0])]

如何直接将赋值表达式的结果用作表达式对我来说并不简单。有没有一种很好的pythonic方式来做到这一点?

4

1 回答 1

1

您在这里不需要赋值表达式,请参阅这个简单的列表理解:

[sum(i)/len(i) for i in zip(*l)]

例子:

# input
l = [[1,2,3], [4,5,6]]

# output
[2.5, 3.5, 4.5]
于 2021-10-01T07:57:47.003 回答