如果用迭代查找一个list中最小和最大值,并返回一个tuple?

如果用迭代查找一个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)


回答:

你没注意到 for 循环是从下标 1 开始的么?

之所以可以这么做 min = max = L[0],是因为 for 循环里所做的事情决定的。当然你也可以不这么做,那么你的 for 循环就得从下标 0 开始,而且 min 和 max 的初始化,一个得置为最大值,一个得置为最小值。

    if len(L) == 0:

        return (None,None)

    else:

        min = $MAX_VALUE

max = $MIN_VALUE

        for l in L[0:]:

            if l > max:

                max = l

            if l < min:

                min = l

        return(min,max)

这种做法,不优雅,可读性也差,而且谁也不知道 L 里存的到底是什么,要是基本数据类型(int, double 这些)还好办,它们的最大值最小值都是好确定的,要是字符串呢?要是其他的自定义结构类型呢?


回答:

在这里L[0]作为一个比较的基准数(想像下排队比身高),你也可以换成其他位置的数, 然后挨个与基准比较并更新基准。

以上是 如果用迭代查找一个list中最小和最大值,并返回一个tuple? 的全部内容, 来源链接: utcz.com/p/937730.html

回到顶部