查找满足给定条件的最小元组值

Finding minimum tuple value satisfying a given condition

我有一些元组:(0,1,2)(3,4,4)(2,2,2) 我想找到零索引的最小值,使第二个索引等于 2.我已经使用 min 内置函数进行了尝试,但它给我一个语法错误。

min(data, key=lambda x: x if x[2] == 2)

不要使用关键参数。如果您想在查找最小值时忽略某些元素,请改用 filter()

data = [(0,1,2), (3,4,4), (2,2,2)]

print(min(filter(lambda x: x[2] == 2, data)))

这输出:

(0, 1, 2)

你快到了。您应该将生成器表达式传递给 min 以相应地过滤列表。

>>> data = [(0,1,2), (3,4,4), (2,2,2)]
>>> min((x for x in data if x[2] == 2), key=lambda x: x[0])
(0, 1, 2)

当然,min 在像这样的数字元组列表上的默认行为意味着在元组的第一个元素上显式键入 min 是不必要的,尽管它可能使代码的意图更加明确。

min(x for x in data if x[2] == 2)