为了
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
版本,您可以替换元素。
关于python - max() 的不同面孔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16327014/