Python min()

时间:2020-02-23 14:43:01  来源:igfitidea点击:

Python min()函数返回可迭代的最小项或者两个或者多个参数中的最小项。

Python min()

Python min()函数语法为:

min(iterable, *[, key, default])
min(arg1, arg2, *args[, key])
  • 如果只有一个参数,则它应该是可迭代的,例如字符串,列表,元组等。
    返回可迭代的最小项。

  • 如果提供了两个或者多个参数,则将返回最小的参数。

  • 我们可以指定key参数来识别最小的项目。
    这是一个可选参数,通常在参数是自定义对象时使用。

  • default参数指定一个对象,如果提供的iterable为空,则返回该对象。
    如果iterable为空且未提供默认值,则会引发" ValueError"异常。

  • 如果找到多个最小元素,则返回第一个。

Python min()函数示例

我们来看一些python min()函数的示例。

min()与字符串

当min()函数与字符串参数一起使用时,将返回具有最小unicode值的字符。

s = 'abcC'
print(min(s))
for c in s:
  print(c, 'unicode value =', ord(c))

输出:

C
a unicode value = 97
b unicode value = 98
c unicode value = 99
C unicode value = 67

我正在使用ord()函数来打印字符串中字符的unicode代码点。

min()与元组

tuple_numbers = (1, 2, 3, 4)
print(min(tuple_numbers))

输出:1

列表的最小值

list_numbers = [1, 2, 3, -4]

print(min(list_numbers))

输出:-4

min()个对象

当我们想对自定义对象使用min()函数时,我们必须提供" key"函数参数用于比较对象。

class Data:
  id = 0

  def __init__(self, i):
      self.id = i

  def __str__(self):
      return 'Data[%s]' % self.id

def get_data_id(data):
  return data.id

# min() with objects and key argument
list_objects = [Data(1), Data(2), Data(-10)]

print(min(list_objects, key=get_data_id))

输出:Data [-10]

如果我们不提供键函数作为参数,则会出现以下错误。

TypeError: '<' 不支持 between instances of 'Data' and 'Data'

min()具有可迭代的空值和默认值

print(min([], default=20))

输出:20

min()函数具有多个参数

print(min(1, 2, 3, 4))

输出:1

带参数和键函数的min()

def str_length(s):
  return len(s)

print(min('a', 'abc', 'b', key=str_length))

输出:a

注意," a"和" b"都是最小的参数,因此第一个" a"由min()函数返回。

min()具有多个可迭代项

x1 = [10, 20, 30]
x2 = [5, 15, 40, 25]

print(min(x1, x2, key=len))

输出:[10,20,30]

如果我们不提供key函数作为参数,则输出将为[5,15,40,25]
这是因为将在可迭代元素的元素之间进行一次比较。
当找到一个值较小的元素时,将返回该元素的可迭代对象。

min()具有多个对象的可迭代对象

x1 = [Data(10), Data(20), Data(30)]
x2 = [Data(5), Data(15), Data(40), Data(25)]

min_list = min(x1, x2, key=len)
for x in min_list:
  print(x)

输出:

Data[10]
Data[20]
Data[30]

请注意,对于多个参数,iterables被视为对象。如果我们不指定键函数,我们将得到错误消息“TypeError:”