使用循环在Python中找最小值
我可以找到最大值,也可以找到平均值,但就是找不到最小值。我知道在循环中有办法找到最大值和最小值,但现在我只会找到最大值。
def large(s)
sum=0
n=0
for number in s:
if number>n:
n=number
return n
有没有办法用这个函数找到最小值呢?
8 个回答
2
找最小值的方法和找最大值的方法是一样的,只不过比较的方向反过来了。也就是说,<
变成>
,反之亦然。开始的时候,可以把最小值设为一个很大的数,比如float("inf")
,或者直接设为列表中的第一个元素。
顺便提一下,Python有一个内置的min
函数可以用来做这个。
2
你需要把n设置成一个很大的数字(比你预期的任何数字都要大),或者从列表中选一个数字来开始比较:
def large(s)
n = s.pop()
for number in s:
if number < n:
n = number
return n
显然,你已经有了最大值和最小值来达到这个目的。
3
你可以使用Python自带的 sum()、min() 和 max() 函数来进行这种分析。
不过,如果你想一次性完成所有操作,或者只是想学会自己怎么写,那么这个过程可以分为两步:1)遍历输入的数据,2)记录当前的总和、到目前为止的最小值和最大值:
def stats(iterable):
'''Return a tuple of the minimum, average, and maximum values
>>> stats([20, 50, 30, 40])
(20, 35.0, 50)
'''
it = iter(iterable)
first = next(it) # Raises an exception if the input is empty
minimum = maximum = cumsum = first
n = 1
for x in it:
n += 1
cumsum += x
if x < minimum:
minimum = x
if x > maximum:
maximum = x
average = cumsum / float(n)
return minimum, average, maximum
if __name__ == '__main__':
import doctest
print doctest.testmod()
这段代码还有一个小细节。它使用输入数据中的第一个值作为最小值、最大值和总和的起始值。这种做法比用正无穷或负无穷作为初始值要好。顺便提一下,Python自带的函数也是这样写的。