python表达式相关问题

问题遇到的现象和发生背景

python表达式相关问题

用代码块功能插入代码,请勿粘贴截图
data=[1,1,1,2,2,1,3,1]
print(max(range(len(data)), key=data.__getitem__))
运行结果及报错内容

运行结果为6,但是range(len(data))结果应该是零到七,取最大值为什么会出来六呢

我的解答思路和尝试过的方法

range(len(data))结果应该是零到七,取最大值为什么会出来六呢

我想要达到的结果

想弄清楚句法原理,谢谢!

关键你指定了key啊
这表示以什么样的值来决定“最大值”
如果没有key这个参数,max取出来的是range(len(data))的最大值,也就是7,但是key指定了data.__getitem__,那就去data这个列表里对应的索引来决定哪个是最大的,data[6]是7,最大,所以返回6

print(max(range(len(data)))