Python 中变量的本地别名(尤其是在 lambda 上下文中)

问题描述 投票:0回答:1

我经常发现,在处理列表时,我最终会得到难以阅读的 lambda,因为它们涉及使用文字常量对数组进行索引,而常量的含义很难推断。比如:

result = list(map(lambda p: (p[0] - altX) / math.cos(p[1]), list_))

虽然通常更复杂。我想为这些列表元素分配临时名称,例如:

x,y = p
(x - altX) / math.cos(y)

有什么优雅的方法可以做到这一点吗?

到目前为止,我发现的最佳解决方案是简单地创建一个独立的函数(即使用 def)。但这通常感觉很重,并且需要将上下文作为额外的参数传递。

def Helper(p, altX): x, y = p (x - altX) / math.cos(y)
使用 

map

 将额外的“上下文”变量传递给函数的难度加大了这种方法的笨拙性。例如,

result = list(map(func, list_, 1))
 语法不正确。我想要这样的东西:

result = list(lambda p as (x,y): (x - altX) / math.cos(y), list_)

result = list(lambda p: with p as x,y: (x - altX) / math.cos(y), list_)

result = list(lambda p: using p[0] as x: using p[1] as y: (x - altX) / math.cos(y), list_)
    
python lambda
1个回答
0
投票
您可以获取一些功能并定义

另一个 函数,该函数除了解压 p

 以用作第一个函数的参数之外什么也不做:

result = list(lambda p: (lambda x,y: (x - altX) / math.cos(y))(*p), list_)
那里

© www.soinside.com 2019 - 2024. All rights reserved.