比较2个值并只返回索引
假设我们有 2 个元素:
x = (123, 'aab', 1)
y = (456, 'cca', 2) or y = None
wherex[0]=Key, x[1]=Value, x[2]=Index和y[0]=Key, y[1]=Value, y[2]=Index, wherey可能是None
Python 中是否有一种优雅的方式将Value两个元素的 与min函数进行比较并返回相应的Index?考虑到这种情况,这y可能是None. 例如
x = (123, 'aab', 1)
y = (456, 'cca', 2)
将返回,1因为min(123,456) = 123 因此x具有较小的值。或者
x = (123, 'aab', 1)
y = None
也会回来 1
回答
它不漂亮:
min((x,) + ((y,) if y else ()))[2]
条件表达式将返回一个包含yif的元组None,否则返回一个空元组。
这将附加到包含x.
然后我们将这个元组传递给min(),它比较两个元组。不需要[0]显式比较,因为元组是按字典顺序比较的。
然后我们提取[2]结果得到对应的索引。
不太神秘的是:
(x if y is None else min(x, y))[2]