--如果你有梦想,并且敢于行动,那么什么时候都不算晚
今天看到这么一道题,题的大意是,求出一个列表的最大值,具体详情代码如下:
def max(list):
if len(list) == 2:
return list[0] if list[0] > list[1] else list[1]
sub_max = max(list[1:])
return list[0] if list[0] > sub_max else sub_max
首先我创建了一个函数max(),单看名字,就已经很显而易见了,是想求出一个最大值。
并且形参部分,是接收了一个列表,然后,如果当这个列表值的数量,等于两个,那么就直接在第二行执行return,利用后面的三元表达式写法,输入二者之间的最大值
另外这里多解释一下,这个三元表达式的运算,也可以换成下面的写法:
return list[0] if list[0] > list[1] else list[1]
# 可以平替为
if list[0] > list[1]:
return list[0]
else:
return list[1]
简单来说,就是左右两边分别是待输出的值,中间是条件,但是具体会输出哪一个值,主要是看是否满足条件,满足,输出前面的,否则输出后面的
ok,然后我们说回正题,如果当整个列表的长度,也就是列表内的值超过两个后,那么执行第四行的语句,是一个最简单的赋值问题,但是我当时看到这里的时候,突然就恍惚了一下,因为我发现这个max(),既像max()的内置方法,又像定义的max()函数,所以这里,他到底是想调用谁呢?
然后后来我也是查了一些资料,才发现,如果函数的名字和内置方法的名字冲突后,他还是会优先去调用内置方法,所以这里的解释,也就是说第四行代码,首先执行了max()的内置方法,求出了整个列表除去第一个数据以外所有值的最大值,然后将这个最大值,赋值给了sub_max变量
然后代码来到第五行,又是一个很简单的三元运算,判断到底是整个列表的第一个数据list[0]大,还是sub_max比较大,然后输出满足条件的那一个