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

发布于 2022-09-12 00:41:01 字数 420 浏览 11 评论 0

是看到廖雪峰的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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

可爱暴击 2022-09-19 00:41:01

你没注意到 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 这些)还好办,它们的最大值最小值都是好确定的,要是字符串呢?要是其他的自定义结构类型呢?

丶视觉 2022-09-19 00:41:01

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文