Python3.8 赋值表达式,用于列表理解或作为表达式
Python3.8 assignment expressions, use in list comprehension or as an expression
我最近发现 assignment expressions 存在。我想重构我的一些代码以利用它们。大多数我想用它的地方转换起来都比较简单
但是,我不确定用于此特定功能的语法。有没有一种方法可以用赋值表达式替换 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 方法来做到这一点?
这里不需要赋值表达式,看这个简单的列表理解:
[sum(i)/len(i) for i in zip(*l)]
示例:
# input
l = [[1,2,3], [4,5,6]]
# output
[2.5, 3.5, 4.5]
我最近发现 assignment expressions 存在。我想重构我的一些代码以利用它们。大多数我想用它的地方转换起来都比较简单
但是,我不确定用于此特定功能的语法。有没有一种方法可以用赋值表达式替换 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 方法来做到这一点?
这里不需要赋值表达式,看这个简单的列表理解:
[sum(i)/len(i) for i in zip(*l)]
示例:
# input
l = [[1,2,3], [4,5,6]]
# output
[2.5, 3.5, 4.5]