Skip to main content
 首页 » 编程设计

python之max() 的不同面孔

2025年05月04日13sky-heaven

为了

l = ["a", "b"] 
def bigger(x): 
    if x == "a": 
        return 1 
    return 2 
print(max(bigger(letter) for letter in l)) #A 
print(max(l, key=bigger))                  #B 
print(max(l, key=lambda x: bigger(x)))     #C 

输出:

  2 
  b 
  b 

A 做了哪些 B 和 C 没有做的事情? B和C有什么区别?

请您参考如下方法:

B 和 C 之间没有区别,只是有点间接(lambda 添加了一个额外的层)。

A 创建数字,然后获取这些数字的 max()。 B 和 C 取列表的 max(),但是 biggest 告诉 max() 如何确定列表中每个项目的相对值。

键 函数扩充 列表中的项目。将其视为创建元组;你从 [(bigger('a'), 'a'), (bigger('b'), 'b')] 中取出最大值然后再次展开元组,就好像你做了 max((bigger(letter), letter) for letter in l)[1].对于您的 A 版本,您可以替换元素。