Python 中的数组解构
Array destructuring in Python
我希望让最后一行的 vals
更清楚。
import rx
from rx import operators as op
light_stream = rx.range(1, 10).pipe(
op.with_latest_from(irradiance_stream),
op.map(lambda vals: print(vals[0], vals[1]))) # light, irradiance
有没有像这样的数组解构
op.map(lambda [light, irradiance]: print(light_intensity, irradiance))) # fake
或者其他方式让代码清晰?谢谢
Python 用于允许解包函数签名中的可迭代参数,这似乎是您想要的 lambda
函数。该功能已在 Python 3 中删除,原因在 PEP 3113.
中列出
它被删除的主要原因是它有点扰乱了内省,因为没有好的方法来命名已经解包的复合参数。如果您采用普通参数(在普通函数中,而不是单行 lambda),您可以通过在单独的一行上手动解包来获得相同的结果(不会弄乱原始参数名称):
# def foo(a, (b, c), d): # this used to be a legal function definition
def foo(a, bc, d): # but now you must leave the two-valued argument packed up
b, c = bc # and explicitly unpack it yourself instead
...
当您 调用 函数时,可能会执行您想要的其他操作是解包值。在您的示例中,您可以调用 print(*vals)
,并且 *
告诉 Python 将可迭代的 vals
解包为 print
的单独参数。如果 vals
始终恰好有两个值,它将与您当前的代码完全一样。
我希望让最后一行的 vals
更清楚。
import rx
from rx import operators as op
light_stream = rx.range(1, 10).pipe(
op.with_latest_from(irradiance_stream),
op.map(lambda vals: print(vals[0], vals[1]))) # light, irradiance
有没有像这样的数组解构
op.map(lambda [light, irradiance]: print(light_intensity, irradiance))) # fake
或者其他方式让代码清晰?谢谢
Python 用于允许解包函数签名中的可迭代参数,这似乎是您想要的 lambda
函数。该功能已在 Python 3 中删除,原因在 PEP 3113.
它被删除的主要原因是它有点扰乱了内省,因为没有好的方法来命名已经解包的复合参数。如果您采用普通参数(在普通函数中,而不是单行 lambda),您可以通过在单独的一行上手动解包来获得相同的结果(不会弄乱原始参数名称):
# def foo(a, (b, c), d): # this used to be a legal function definition
def foo(a, bc, d): # but now you must leave the two-valued argument packed up
b, c = bc # and explicitly unpack it yourself instead
...
当您 调用 函数时,可能会执行您想要的其他操作是解包值。在您的示例中,您可以调用 print(*vals)
,并且 *
告诉 Python 将可迭代的 vals
解包为 print
的单独参数。如果 vals
始终恰好有两个值,它将与您当前的代码完全一样。