Discuss / Python / 一开始想到的居然不是用迭代的方法

一开始想到的居然不是用迭代的方法

Topic source

Spencer

#1 Created at ... [Delete] [Delete and Lock User]

这里的画风好像和大家的都不太一样

def findMinAndMax(L):
    if len(L) == 0:
        return None,None
    L.sort()
    min = L[0]
    max = L[len(L)-1]
    return min,max

但是最后还是又另外写了更常见的方法

def findMinAndMax(L):
    if len(L) == 0:
        return None,None
    max = min = L[0]
    for x in L:
        max = max if max > x else x
        min = min if min < x else x
    return min,max

Spencer

#2 Created at ... [Delete] [Delete and Lock User]

第一种方法简直是画蛇添足。都用内置函数了,那为什么不直接用更傻瓜的方法

def findMinAndMax(L):
    return min(L),max(L)

Spencer

#3 Created at ... [Delete] [Delete and Lock User]

等等,测试里面写的是

findMinAndMax([7])

应该注意到[7,]和[7]的不同在于,后者可能会被识别成int,然后会造成传入类型错误。

所以这个方法不可取

未闻花名

#4 Created at ... [Delete] [Delete and Lock User]

括号里的是列表[7],不会被识别为int,元祖才需要注意()的使用,声明只有一个元素的元祖时需要在元素后面添加逗号 ', ' ,否则括号会被当作运算符使用

findMinAndMax([7])

  • 1

Reply