如果用迭代查找一个list中最小和最大值,并返回一个tuple?
是看到廖雪峰的python教程中的练习,自己不会,只知道怎么用函数得出最大值和最小值。参考答案也看不懂,为什么要min和max赋值为L[0]?
以下为参考答案:
def findMinAndMax(L):
if len(L) == 0:
return (None,None)
else:
min = max = L[0]
for l in L[1:]:
if l > max:
max = l
if l < min:
min = l
return(min,max)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
你没注意到 for 循环是从下标 1 开始的么?
之所以可以这么做
min = max = L[0]
,是因为 for 循环里所做的事情决定的。当然你也可以不这么做,那么你的 for 循环就得从下标 0 开始,而且 min 和 max 的初始化,一个得置为最大值,一个得置为最小值。这种做法,不优雅,可读性也差,而且谁也不知道 L 里存的到底是什么,要是基本数据类型(int, double 这些)还好办,它们的最大值最小值都是好确定的,要是字符串呢?要是其他的自定义结构类型呢?
在这里L[0]作为一个比较的基准数(想像下排队比身高),你也可以换成其他位置的数, 然后挨个与基准比较并更新基准。