Python內置函數(43)——min

来源:http://www.cnblogs.com/sesshoumaru/archive/2016/11/07/6035587.html
-Advertisement-
Play Games

英文文檔: min(iterable, *[, key, default]) min(arg1, arg2, *args[, key]) Return the smallest item in an iterable or the smallest of two or more arguments. ...


英文文檔:

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

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

Return the smallest item in an iterable or the smallest of two or more arguments.

If one positional argument is provided, it should be an iterable. The smallest item in the iterable is returned. If two or more positional arguments are provided, the smallest of the positional arguments is returned.

There are two optional keyword-only arguments. The key argument specifies a one-argument ordering function like that used for list.sort(). The default argument specifies an object to return if the provided iterable is empty. If the iterable is empty and default is not provided, a ValueError is raised.

If multiple items are minimal, the function returns the first one encountered. This is consistent with other sort-stability preserving tools such as sorted(iterable, key=keyfunc)[0] and heapq.nsmallest(1, iterable, key=keyfunc).

 

說明:

  

  1. 函數功能為取傳入的多個參數中的最小值,或者傳入的可迭代對象元素中的最小值。預設數值型參數,取值小者;字元型參數,取字母表排序靠前者。還可以傳入命名參數key,其為一個函數,用來指定取最小值的方法。default命名參數用來指定最小值不存在時返回的預設值。功能與max函數相反。

  2. 函數至少傳入兩個參數,但是有隻傳入一個參數的例外,此時參數必須為可迭代對象,返回的是可迭代對象中的最小元素。

>>> min(1) # 傳入1個參數報錯
Traceback (most recent call last):
  File "<pyshell#0>", line 1, in <module>
    min(1)
TypeError: 'int' object is not iterable
>>> min(1,2) # 傳入2個參數 取2個中較小者
1
>>> min(1,2,3) # 傳入3個參數 取3個中較小者
1
>>> min('1234') # 傳入1個可迭代對象,取其最小元素值
'1'

  3. 當傳入參數為數據類型不一致時,傳入的所有參數將進行隱式數據類型轉換後再比較,如果不能進行隱式數據類型轉換,則會報錯。

>>> min(1,1.1,1.3e1) # 整數與浮點數可取最小值
1
>>> min(1,2,'3') # 數值與字元串不能取最小值
Traceback (most recent call last):
  File "<pyshell#5>", line 1, in <module>
    min(1,2,'3')
TypeError: unorderable types: str() < int()

>>> min([1,2],[1,3]) # 列表與列表可取最小值
[1, 2]
>>> min((1,2),[1,3]) # 列表與元組不能取最小值
Traceback (most recent call last):
  File "<pyshell#7>", line 1, in <module>
    min((1,2),[1,3])
TypeError: unorderable types: list() < tuple()

   4. 當存在多個相同的最小值時,返回的是最先出現的那個最小值。

#定義a、b、c 3個列表
>>> a = [1,2]
>>> b = [1,3]
>>> c = [1,2]

#查看a、b、c 的id
>>> id(a)
66486184
>>> id(b)
66486224
>>> id(c)
66486024

#取最小值
>>> d = min(a,b,c)
>>> id(d)
66486184


#驗證是否最小值是否是a
>>> id(a) == id(d)
True

  5. 預設數值型參數,取值小者;字元型參數,取字母表排序靠前者;序列型參數,則依次按索引位置的值進行比較取最小者。還可以通過傳入命名參數key,指定取最小值方法。

>>> min(1,2) # 取數值小者
1
>>> min('a','b') # 取排序靠前者
'a'
>>> min('ab','ac','ad') # 依次按索引比較取較小者
'ab'

>>> min(-1,-2) # 數值預設去數值較小者
-2
>>> min(-1,-2,key = abs)  # 傳入了求絕對值函數,則參數都會進行求絕對值後再取較小者
-1

  6. key參數的另外一個作用是,不同類型對象本來不能比較取最小值的,傳入適當的key函數,變得可以比較能取最小值了。

>>> min(1,2,'3') #數值和字元串不能取最小值
Traceback (most recent call last):
  File "<pyshell#22>", line 1, in <module>
    min(1,2,'3')
TypeError: unorderable types: str() < int()
>>> min(1,2,'3',key = int) # 指定key為轉換函數後,可以取最小值
1

>>> min([1,2],(1,1)) #元組和列表不能取最小值
Traceback (most recent call last):
  File "<pyshell#24>", line 1, in <module>
    min([1,2],(1,1))
TypeError: unorderable types: tuple() < list()
>>> min([1,2],(1,1),key = lambda x:x[1]) #指定key為返回序列索引1位置的元素後,可以取最小值
(1, 1)

  7. 當只傳入的一個可迭代對象時,而且可迭代對象為空,則必須指定命名參數default,用來指定最小值不存在時,函數返回的預設值。

>>> min(()) #空可迭代對象不能取最小值
Traceback (most recent call last):
  File "<pyshell#26>", line 1, in <module>
    min(())
ValueError: min() arg is an empty sequence

>>> min((),default = 0) #空可迭代對象,指定default參數為預設值
0

>>> min((),0) #預設值必須使用命名參數進行傳參,否則將被認為是一個比較的元素
Traceback (most recent call last):
  File "<pyshell#27>", line 1, in <module>
    min((),0)
TypeError: unorderable types: int() < tuple()

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • http://www.jxedt.com/wen/yueche/3174956032145162275.html http://www.jxedt.com/wen/yueche/3174956032145096739.html http://www.jxedt.com/wen/yueche/3174 ...
  • http://www.jxedt.com/wen/yueche/3174966145590296611.htmlhttp://www.jxedt.com/wen/yueche/3174966152857976920.htmlhttp://www.jxedt.com/wen/yueche/317496 ...
  • http://www.jxedt.com/wen/yueche/3174960937224896527.html http://www.jxedt.com/wen/yueche/3174960954294009881.html http://www.jxedt.com/wen/yueche/3174 ...
  • http://www.jxedt.com/wen/luxian/3174961955107373081.html http://www.jxedt.com/wen/luxian/3174961955107504153.html http://www.jxedt.com/wen/luxian/3174 ...
  • http://www.jxedt.com/wen/luxian/3174967142117802019.html http://www.jxedt.com/wen/luxian/3174967142944342104.html http://www.jxedt.com/wen/luxian/3174 ...
  • http://www.jxedt.com/wen/luxian/3174952620276514904.html http://www.jxedt.com/wen/luxian/3174952621607551011.html http://www.jxedt.com/wen/luxian/3174 ...
  • 一、NuGet是什麼? NuGet是Microsoft開發平臺的程式集包管理器,它由客戶端工具和服務端站點組成,客戶端工具提供給用戶管理和安裝/卸載軟體程式包,以及打包和發佈程式包到NuGet服務端站點等功能,服務端站點存儲已經發行的軟體包,併為NuGet客戶端軟體包庫提供服務,使軟體包共用給其他的 ...
  • 英文文檔: 2. 函數可以接收一個可選的default參數,傳入default參數後,如果可迭代對象還有元素沒有返回,則依次返回其元素值,如果所有元素已經返回,則返回default指定的預設值而不拋出StopIteration 異常。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...