比较 2 个值并只返回索引

F.V*_*.V. 1 python

假设我们有 2 个元素:

x = (123, 'aab', 1)
y = (456, 'cca', 2) or y = None 
Run Code Online (Sandbox Code Playgroud)

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) 
Run Code Online (Sandbox Code Playgroud)

将返回,1因为min(123,456) = 123 因此x具有较小的值。或者

x = (123, 'aab', 1)
y = None
Run Code Online (Sandbox Code Playgroud)

也会回来 1

Bar*_*mar 5

它不漂亮:

min((x,) + ((y,) if y else ()))[2]
Run Code Online (Sandbox Code Playgroud)

条件表达式将返回一个包含yif的元组None,否则返回一个空元组。

这将附加到包含x.

然后我们将这个元组传递给min(),它比较两个元组。不需要[0]显式比较,因为元组是按字典顺序比较的。

然后我们提取[2]结果得到对应的索引。

不太神秘的是:

(x if y is None else min(x, y))[2]
Run Code Online (Sandbox Code Playgroud)