python奇技淫巧——max/min函式的用法

morra發表於2017-01-11

本文以max()為例,對min/max內建函式進行說明

原始碼

def max(*args, key=None): # known special case of max
    """
    max(iterable, *[, default=obj, key=func]) -> value
    max(arg1, arg2, *args, *[, key=func]) -> value

    With a single iterable argument, return its biggest item. The
    default keyword-only argument specifies an object to return if
    the provided iterable is empty.
    With two or more arguments, return the largest argument.
    """
    pass

初級技巧

tmp = max(1,2,4)
print(tmp)
#可迭代物件
a = [1, 2, 3, 4, 5, 6]
tmp = max(a)
print(tmp)

中級技巧:key屬性的使用

當key引數不為空時,就以key的函式物件為判斷的標準。
如果我們想找出一組數中絕對值最大的數,就可以配合lamda先進行處理,再找出最大值

a = [-9, -8, 1, 3, -4, 6]
tmp = max(a, key=lambda x: abs(x))
print(tmp)

高階技巧:找出字典中值最大的那組資料

如果有一組商品,其名稱和價格都存在一個字典中,可以用下面的方法快速找到價格最貴的那組商品:

prices = {
    'A':123,
    'B':450.1,
    'C':12,
    'E':444,
}
# 在對字典進行資料操作的時候,預設只會處理key,而不是value
# 先使用zip把字典的keys和values翻轉過來,再用max取出值最大的那組資料
max_prices = max(zip(prices.values(), prices.keys()))
print(max_prices) # (450.1, 'B')

當字典中的value相同的時候,才會比較key:

prices = {
    'A': 123,
    'B': 123,
}

max_prices = max(zip(prices.values(), prices.keys()))
print(max_prices) # (123, 'B')

min_prices = min(zip(prices.values(), prices.keys()))
print(min_prices) # (123, 'A')

相關文章