【问题标题】:Assigning a pair of variables to the min/max of two variables in Python在Python中将一对变量分配给两个变量的最小值/最大值
【发布时间】:2018-10-22 21:06:34
【问题描述】:

我想将两个量分配给变量minmax,具体取决于它们的值。假设f 是一个返回整数值的函数。有什么办法可以让我做类似的事情

min, max = f(1), f(2)

f(1)f(2) 的值是哪一个?显然,上面将f(1) 分配给minf(2) 分配给最大值,而不管它们的值如何。

【问题讨论】:

  • ... = sorted((f(1), f(2))) 如果我理解正确?

标签: python python-3.x variables syntactic-sugar


【解决方案1】:

您可以在将返回值分配给min_vmax_v 之前对它们进行排序。

min_v, max_v = sorted((f(1), f(2)))

如果您有一个小的可迭代返回值(但超过 2 个),使用 extended iterable unpacking 可能没问题。

min_v, *_, max_v = sorted(map(f, some_small_list))

当然,如果您将f 应用于任何相当长的列表,则使用内置函数(您shouldn't shadow)提取最小值和最大值要比排序和解包更有效。

【讨论】:

    【解决方案2】:

    你可以这样做:

    min, max = (f(1),(f2)) if f(1)<f(2) else (f(2),f(1))
    

    如果这是你要找的。​​p>

    【讨论】:

    • 这会调用函数两次
    • 对于那些感兴趣的人,这是PEP-572 试图解决的问题类型。
    • @chepner 在这里如何使用赋值表达式?
    • 我假设类似min, max = a, b if a:=f(1) &lt; b:=f(2) else b, a(假设:=胜出)。或min, max = a, b if a &lt; b else b, a given (a, b) = (f(1), f(2))。 (加或减一些括号)
    猜你喜欢
    • 1970-01-01
    • 2019-05-13
    • 2017-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-06
    • 2011-08-08
    • 2021-09-19
    相关资源
    最近更新 更多