比较2个值并只返回索引

假设我们有 2 个元素:

x = (123, 'aab', 1)
y = (456, 'cca', 2) or y = None 

wherex[0]=Key, x[1]=Value, x[2]=Indexy[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]


以上是比较2个值并只返回索引的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>