将一对变量分配给 Python 中两个变量的 min/max
Assigning a pair of variables to the min/max of two variables in Python
我想为变量 min
和 max
分配两个量,具体取决于它们的值。假设 f
是一个 returns 整数值的函数。有什么办法可以做类似
的事情吗?
min, max = f(1), f(2)
哪个占 f(1)
和 f(2)
的值?显然,上面将 f(1)
分配给 min
并将 f(2)
分配给 max 而不管它们的值如何。
您可以这样做:
min, max = (f(1),(f2)) if f(1)<f(2) else (f(2),f(1))
如果这就是您要找的。
您可以在将 return 值分配给 min_v
和 max_v
之前对其进行排序。
min_v, max_v = sorted((f(1), f(2)))
如果你有一个小的 return 值的可迭代对象(但超过 2 个),使用 extended iterable unpacking 可能没问题。
min_v, *_, max_v = sorted(map(f, some_small_list))
但是当然,如果您将 f
应用于任何相当长的列表,使用内置函数(您 shouldn't shadow)提取最小值和最大值会更有效而不是排序和解包。
我想为变量 min
和 max
分配两个量,具体取决于它们的值。假设 f
是一个 returns 整数值的函数。有什么办法可以做类似
min, max = f(1), f(2)
哪个占 f(1)
和 f(2)
的值?显然,上面将 f(1)
分配给 min
并将 f(2)
分配给 max 而不管它们的值如何。
您可以这样做:
min, max = (f(1),(f2)) if f(1)<f(2) else (f(2),f(1))
如果这就是您要找的。
您可以在将 return 值分配给 min_v
和 max_v
之前对其进行排序。
min_v, max_v = sorted((f(1), f(2)))
如果你有一个小的 return 值的可迭代对象(但超过 2 个),使用 extended iterable unpacking 可能没问题。
min_v, *_, max_v = sorted(map(f, some_small_list))
但是当然,如果您将 f
应用于任何相当长的列表,使用内置函数(您 shouldn't shadow)提取最小值和最大值会更有效而不是排序和解包。