首页 > 开发 > Python > 正文

Python中使用min()函数求最小值

2023-04-25 12:32:05
字体:
来源:转载
供稿:网友

Python中min()函数的作用是求一组数据中的最小者,如一组数字的最小值。

一、min()函数的语法格式

Python中min()函数的语法格式与max()函数语法格式相同。一般语法格式如下:

min( iterable, *[,key, default])

参数的含义如下:

  • iterable 要在该参数所指定的对象中找出最小值,该参数应是一个可迭代的对象,如列表,元组,字符串等。
  • key 用于指定排序函数,该函数应只有一行;
  • default 当传递的iterable是一个空对象时的默认值。

如果直接将多个数值直接作为参数,其语法格式如下:

min(arg1, arg2, *args[,key])

  • arg1, arg2,...是一组数值,作为一组参数传递给函数,让其找出最小值;
  • key 用于指定排序函数。

在了解了min()函数的基本语法格式后,下面举例来说明该函数的具体使用方法。

Python min函数

二、可迭代对象作为参数传递给min函数

下面这段程序演示了列表、元组作为参数传递给min函数的情形。

#求列表中的最小值
list1 = [13,46,67,3,90,52]
min1 = min(list1)
print("最小值是:", min1)
list2 = []
min2 = min(list2, default = None)
print("最小值是:", min2)

#求元组中的最小值
t = (12,54,32,98,33)
min3 = min(t)
print("最小值是:", min3)

输出结果:

最小值是: 3
最小值是: None
最小值是: 12

上面给出了三个例子用于求给定迭代对象中的最小值,其中求min1是一般的调用情况,这时要求迭代对象list1不能为空。求min2时给出了default参数,即迭代对象为空时,给出的最小值为None,如未设置default参数,迭代对象为空时将会给出以下错误:

ValueError: min() arg is an empty sequence

min3是迭代对象为元组时的情形。

三、参数直接给出多个值

我们在使用min()函数时也可以直接给出不少于2个值的参数,直接求出其最小者:

#传递多个值作为参数
min4 = min(12, 9, 87, 23, 65)
print("最小值是:", min4)

其输出结果如下:

最小值是: 9

在使用这种形式时要确保给出的参数值不少于两个值,否则会给出如下错误:

TypeError: 'int' object is not iterable即参数类型错误,在给定一个参数时,Python解释器将会把该种调用理解为第一种形式:即传递可迭代对象,否则就会出错。

四、key参数的使用

有时传递的可迭代对象的元素值仍为一个集合序列值时,Python解释器无法按照常规方法求最小值,这时需要我们指定排序的算法。

list3 = [[32,10,68],[45,8,99],[36,29,79]]

def func(alist):
    return alist[1]

min5 = min(list3, key = func)
print("列表中的最小值为:", min5)
min6 = min(list3)
print("列表中的最小值为:", min6)

 其输出结果如下:

列表中的最小值为: [45, 8, 99]
列表中的最小值为: [32, 10, 68]

 上面两个例子中,求min5时指定了key参数,key参数所指定的函数是要求按照列表中第2个元素值的大小进行排序。由于三个子列表中第2个元素的最小值是第2个子列表,所以输出结果为:[45, 8, 99]。

实际上,在这种情况下,即使没有给定key参数,默认是按照子列表中的第1个进行排序,min6演示了这种情况。

当指定key参数时,迭代对象中的每个元素也应该是可迭代对象。

五、其它类型的数据举例

min函数不仅可以用于数值型的可迭代对象,也可以运用于其它类型的可迭代对象,如列表、元组、字符串。在上面的例子中已经证明了可迭代对象的元素为列表的情形,默认是比较的每个子列表中第一个元素值的大小。元组也是如此。

对于字符串是比较第一个字符的Unicode值。下面给出一个字符串的例子。

minstr1= min("I Love China!")
print("最小字符:", minstr1)
minstr2 = min("我爱中国")
#使用ord找出每个字符的Unicode码
print("我:",ord("我"))
print("爱:",ord("爱"))
print("中:",ord("中"))
print("国:",ord("国"))
print("最小字符:", minstr2)

 输出结果如下:

最小字符: ' '
我: 25105
爱: 29233
中: 20013
国: 22269
最小字符: 中
上面第1个例子中,空格是最小字符。

本文(完)

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表