python類內置函數
1. python內置函數有哪些
python常見的內置函數有:
1. abs()函數返回數字的絕對值。
2. all() 函數用於判斷給定的參數中的所有元素是否都為 TRUE,如果是返回 True,否則返回 False。元素除了是 0、空、None、False 外都算 True;空元組、空列表返回值為True。
3. any() 函數用於判斷給定的參數是否全部為False,是則返回False,如果有一個為True,則返回True。 元素除了是 0、空、False外都算 TRUE。
4. bin()函數返回一個整數int或者長整數long int的二進製表示。
5. bool() 函數用於將給定參數轉換為布爾類型,如果參數不為空或不為0,返回True;參數為0或沒有參數,返回False。
6. bytearray()方法返回一個新位元組數組。這個數組里的元素是可變的,並且每個元素的值范圍: 0 <= x < 256(即0-255)。即bytearray()是可修改的二進制位元組格式。
7. callable()函數用於檢查一個對象是否可調用的。對於函數、方法、lambda函式、類以及實現了 __call__ 方法的類實例, 它都返回 True。(可以加括弧的都可以調用)
8. chr()函數用一個范圍在range(256)內(即0~255)的整數作參數,返回一個對應的ASCII數值。
9. dict()函數用來將元組/列表轉換為字典格式。
10. dir()函數不帶參數時,返回當前范圍內的變數、方法和定義的類型列表;帶參數時,返回參數的屬性、方法列表。
(1)python類內置函數擴展閱讀:
如何查看python3.6的內置函數?
1、首先先打開python自帶的集成開發環境IDLE;
2、然後我們直接輸入"dir(__builtins__)",需要注意的是builtins左右的下劃線都是兩個;
3、回車之後我們就可以看到python所有的內置函數;
4、接下來我們學習第二種查看python內置函數的方法,我們直接在IDLE中輸入"import builtins",然後輸入"dir(builtins)";
5、然後回車,同樣的這個方法也可以得到所有的python內置的函數;
6、這里我們可以使用python內置函數len()來查看python內置函數的個數,這里我們直接輸入"len(dir(builtins))";
7、回車之後我們可以看到系統返回值153,說明我們現在這個版本中有153個內置函數;
8、最後我們介紹一個比較有用的內置函數"help",python內置函數有一百多個,我們當然不能記住所有的函數,這里python提供了一個"help"函數,我們來看一個例子一起來體會一下help函數的用法,這里我們直接輸入"help(len)",然後回車,會看到系統給我們對於內置函數"len"的解釋,當然對於其他函數可能會有更加詳細的解釋以及用法提示。
2. python3--內置函數
python的常用內置函數
1.abs() 函數返回數字的絕對值
abs(-40)=40
2. dict() 函數用於創建一個字典
>>dict()
>>{} #創建一個空字典類似於u={},字典的存取方式一般為key->value
例如u = {"username":"tom", "age":18}
3. help() 函數用於查看函數或模塊用途的詳細說明
>>help('math')查看math模塊的用處
>>a=[1,2,3,4]
>>help(a)查看列表list幫助信息
4.dir()獲得當前模塊的屬性列表
>> dir(help)
['__call__', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__le__', '__lt__', '__mole__', '__ne__', '__new__', '__rece__', '__rece_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__']
>>>
5.min() 方法返回給定參數的最小值 /參數可以為序列
>>> a= min(10,20,30,40)
>>> a
10
6. next() 返回迭代器的下一個項目
>>> it = iter([1, 2, 3, 4, 5])
>>> next(it)
1
>>>
>>> next(it)
2
>>>
7. id() 函數用於獲取對象的內存地址
>>> a=12
>>> id(a)
1550569552
8.enumerate() 函數用於將一個可遍歷的數據對象(如列表、元組或字元串)組合為一個索引序列,同時列出數據和數據下標,一般用在 for 循環當中。
>>> a=["tom","marry","leblan"]
>>> list(enumerate(a))
[(0, 'tom'), (1, 'marry'), (2, 'leblan')]
>>>
9. oct() 函數將一個整數轉換成8進制字元串
>>> oct(15)
'0o17'
>>> oct(10)
'0o12'
>>>
10. bin() 返回一個整數 int 或者長整數 long int 的二進製表示
>>> bin(10)
'0b1010'
>>> bin(15)
'0b1111'
>>>
11.eval() 函數用來執行一個字元串表達式,並返回表達式的值
>>> eval('2+2')
4
12.int() 函數用於將一個字元串會數字轉換為整型
>>> int(3)
3
>>> int(3.6)
3
>>> int(3.9)
3
>>> int(4.0)
4
>>>
13.open() 函數用於打開一個文件,創建一個file對象,相關的方法才可以調用它進行讀寫
>>>f=open('test.txt')
14.str() 函數將對象轉化為適於人閱讀的形式
>>> str(3)
'3'
>>>
15. bool() 函數用於將給定參數轉換為布爾類型,如果沒有參數,返回 False
>>> bool()
False
>>> bool(1)
True
>>> bool(10)
True
>>> bool(10.0)
True
16.isinstance() 函數來判斷一個對象是否是一個已知的類型
>>> a=5
>>> isinstance(a,int)
True
>>> isinstance(a,str)
False
>>>
17. sum() 方法對系列進行求和計算
>>> sum([1,2,3],5)
11
>>> sum([1,2,3])
6
>>>
18. super() 函數用於調用下一個父類(超類)並返回該父類實例的方法。super 是用來解決多重繼承問題的,直接用類名調用父類方法
class User(object):
def__init__(self):
class Persons(User):
super(Persons,self).__init__()
19. float() 函數用於將整數和字元串轉換成浮點數
>>> float(1)
1.0
>>> float(10)
10.0
>>>
20. iter() 函數用來生成迭代器
>>> a=[1,2,3,4,5,6]
>>> iter(a)
>>> for i in iter(a):
... print(i)
...
1
2
3
4
5
6
>>>
21.tuple 函數將列表轉換為元組
>>> a=[1,2,3,4,5,6]
>>> tuple(a)
(1, 2, 3, 4, 5, 6)
>>>
22.len() 方法返回對象(字元、列表、元組等)長度或項目個數
>>> s = "playbasketball"
>>> len(s)
14
>>>a=[1,2,3,4,5,6]
>>> len(a)
6
>>>
23. property() 函數的作用是在新式類中返回屬性值
class User(object):
def __init__(self,name):
self.name = name
def get_name(self):
return self.get_name
@property
def name(self):
return self_name
24.type() 函數返回對象的類型
25.list() 方法用於將元組轉換為列表
>>> b=(1,2,3,4,5,6)
>>> list(b)
[1, 2, 3, 4, 5, 6]
>>>
26.range() 函數可創建一個整數列表,一般用在 for 循環中
>>> range(10)
range(0, 10)
>>> range(10,20)
range(10, 20)
>>>
27. getattr() 函數用於返回一個對象屬性值
>>> class w(object):
... s=5
...
>>> a = w()
>>> getattr(a,'s')
5
>>>
28. complex() 函數用於創建一個復數或者轉化一個字元串或數為復數。如果第一個參數為字元串,則不需要指定第二個參數
>>> complex(1,2)
(1+2j)
>>> complex(1)
(1+0j)
>>> complex("1")
(1+0j)
>>>
29.max() 方法返回給定參數的最大值,參數可以為序列
>>> b=(1,2,3,4,5,6)
>>> max(b)
6
>>>
30. round() 方法返回浮點數x的四捨五入值
>>> round(10.56)
11
>>> round(10.45)
10
>>> round(10.45,1)
10.4
>>> round(10.56,1)
10.6
>>> round(10.565,2)
10.56
>>>
31. delattr 函數用於刪除屬性
>>> class Num(object):
... a=1
... b=2
... c=3.
..>>> print1 = Num()
>>> print('a=',print1.a)
a= 1
>>> print('b=',print1.b)
b= 2
>>> print('c=',print1.c)
c= 3
>>> delattr(Num,'b')
>>> print('b=',print1.b)
Traceback (most recent call last): File "", line 1, inAttributeError: 'Num' object has no attribute 'b'
>>>
32. hash() 用於獲取取一個對象(字元串或者數值等)的哈希值
>>> hash(2)
2
>>> hash("tom")
-1675102375494872622
33. set() 函數創建一個無序不重復元素集,可進行關系測試,刪除重復數據,還可以計算交集、差集、並集等。
>>> a= set("tom")
>>> b = set("marrt")
>>> a,b
({'t', 'm', 'o'}, {'m', 't', 'a', 'r'})
>>> a&b#交集
{'t', 'm'}
>>> a|b#並集
{'t', 'm', 'r', 'o', 'a'}
>>> a-b#差集
{'o'}
>>>
3. 什麼是Python內置函數
所謂的內置函數,就是Python給你提供的,直接可以拿來使用的函數,比如說print、input等。常見的內置函數如下:
第一、help()函數
Help()函數的參數分為兩種:如果傳一個字元串做參數的話,它會自動搜索以這個字元串命名的模塊、方法等;如果傳入的是一個對象,就會顯示這個對象的類型的幫助。比如輸入help(『print』),它就會尋找以『print』為名的模塊、類等,找不到就會看到提示信息;而print在Python里是一個保留字,和pass、return同等,而非對象,所以help(print)也會報錯。
第二、dir()函數
dir()函數返回任意對象的屬性和方法列表,包含模塊對象、函數對象、字元串對象、列表對象、字典對象等。盡管查找和導入模塊相對容易,但是記住每個模塊包含什麼卻不是這么簡單,您並不希望總是必須查看源代碼來找出答案。Python提供了一種方法,可以使用內置的dir()函數來檢查模塊的內容,當你為dir()提供一個模塊名的時候,它返回模塊定義的屬性列表。dir()函數適用於所有對象的類型,包含字元串、整數、列表、元組、字典、函數、定製類、類實例和類方法。
第三、input與raw_input函數
都是用於讀取用戶輸入的,不同的是input()函數期望用戶輸入的是一個有效的表達式,而raw_input()函數是將用戶的輸入包裝成一個字元串。
第四、Print()函數
Print在Python3版本之間是作為Python語句使用的,在Python3里print是作為函數使用的。
第五、type()函數
Type()函數返回任意對象的數據類型。在types模塊中列出了可能的數據類型,這對於處理多種數據類型的函數非常有用,它通過返回類型對象來做到這一點,可以將這個類型對象與types模塊中定義類型相比較。
4. Python的函數都有哪些
【常見的內置函數】
1、enumerate(iterable,start=0)
是python的內置函數,是枚舉、列舉的意思,對於一個可迭代的(iterable)/可遍歷的對象(如列表、字元串),enumerate將其組成一個索引序列,利用它可以同時獲得索引和值。
2、zip(*iterables,strict=False)
用於將可迭代的對象作為參數,將對象中對應的元素打包成一個個元組,然後返回由這些元組組成的列表。如果各個迭代器的元素個數不一致,則返回列表長度與最短的對象相同,利用*號操作符,可以將元組解壓為列表。
3、filter(function,iterable)
filter是將一個序列進行過濾,返回迭代器的對象,去除不滿足條件的序列。
4、isinstance(object,classinfo)
是用來判斷某一個變數或者是對象是不是屬於某種類型的一個函數,如果參數object是classinfo的實例,或者object是classinfo類的子類的一個實例,
返回True。如果object不是一個給定類型的的對象, 則返回結果總是False
5、eval(expression[,globals[,locals]])
用來將字元串str當成有效的表達式來求值並返回計算結果,表達式解析參數expression並作為Python表達式進行求值(從技術上說是一個條件列表),採用globals和locals字典作為全局和局部命名空間。
【常用的句式】
1、format字元串格式化
format把字元串當成一個模板,通過傳入的參數進行格式化,非常實用且強大。
2、連接字元串
常使用+連接兩個字元串。
3、if...else條件語句
Python條件語句是通過一條或多條語句的執行結果(True或者False)來決定執行的代碼塊。其中if...else語句用來執行需要判斷的情形。
4、for...in、while循環語句
循環語句就是遍歷一個序列,循環去執行某個操作,Python中的循環語句有for和while。
5、import導入其他腳本的功能
有時需要使用另一個python文件中的腳本,這其實很簡單,就像使用import關鍵字導入任何模塊一樣。
5. Python 幾個重要的內置函數
在學習Python的過程中,有幾個比較重要的內置函數:help()函數、dir()函數、input()與raw_input()函數、print()函數、type()函數。
第一、help()函數
Help()函數的參數分為兩種:如果傳一個字元串做參數的話,它會自動搜索以這個字元串命名的模塊、方法等;如果傳入的是一個對象,就會顯示這個對象的類型的幫助。比如輸入help(『print』),它就會尋找以『print』為名的模塊、類等,找不到就會看到提示信息;而print在Python里是一個保留字,和pass、return同等,而非對象,所以help(print)也會報錯。
第二、dir()函數
dir()函數返回任意對象的屬性和方法列表,包含模塊對象、函數對象、字元串對象、列表對象、字典對象等。盡管查找和導入模塊相對容易,但是記住每個模塊包含什麼卻不是這么簡單,您並不希望總是必須查看源代碼來找出答案。Python提供了一種方法,可以使用內置的dir()函數來檢查模塊的內容,當你為dir()提供一個模塊名的時候,它返回模塊定義的屬性列表。dir()函數適用於所有對象的類型,包含字元串、整數、列表、元組、字典、函數、定製類、類實例和類方法。
第三、input與raw_input函數
都是用於讀取用戶輸入的,不同的是input()函數期望用戶輸入的是一個有效的表達式,而raw_input()函數是將用戶的輸入包裝成一個字元串。
第四、Print()函數
Print在Python3版本之間是作為Python語句使用的,在Python3里print是作為函數使用的。
第五、type()函數
Type()函數返回任意對象的數據類型。在types模塊中列出了可能的數據類型,這對於處理多種數據類型的函數非常有用,它通過返回類型對象來做到這一點,可以將這個類型對象與types模塊中定義類型相比較。
6. Python中冷門但非常好用的內置函數
Python中有許多內置函數,不像print、len那麼廣為人知,但它們的功能卻異常強大,用好了可以大大提高代碼效率,同時提升代碼的簡潔度,增強可閱讀性
Counter
collections在python官方文檔中的解釋是High-performance container datatypes,直接的中文翻譯解釋高性能容量數據類型。這個模塊實現了特定目標的容器,以提供Python標准內建容器 dict , list , set , 和 tuple 的替代選擇。在python3.10.1中它總共包含以下幾種數據類型:
容器名簡介
namedtuple() 創建命名元組子類的工廠函數
deque 類似列表(list)的容器,實現了在兩端快速添加(append)和彈出(pop)
ChainMap 類似字典(dict)的容器類,將多個映射集合到一個視圖裡面
Counter 字典的子類,提供了可哈希對象的計數功能
OrderedDict 字典的子類,保存了他們被添加的順序
defaultdict 字典的子類,提供了一個工廠函數,為字典查詢提供一個默認值
UserDict 封裝了字典對象,簡化了字典子類化
UserList 封裝了列表對象,簡化了列表子類化
UserString 封裝了字元串對象,簡化了字元串子類化
其中Counter中文意思是計數器,也就是我們常用於統計的一種數據類型,在使用Counter之後可以讓我們的代碼更加簡單易讀。Counter類繼承dict類,所以它能使用dict類裡面的方法
舉例
#統計詞頻
fruits = ['apple', 'peach', 'apple', 'lemon', 'peach', 'peach']
result = {}
for fruit in fruits:
if not result.get(fruit):
result[fruit] = 1
else:
result[fruit] += 1
print(result)
#{'apple': 2, 'peach': 3, 'lemon': 1}下面我們看用Counter怎麼實現:
from collections import Counter
fruits = ['apple', 'peach', 'apple', 'lemon', 'peach', 'peach']
c = Counter(fruits)
print(dict(c))
#{'apple': 2, 'peach': 3, 'lemon': 1}顯然代碼更加簡單了,也更容易閱讀和維護了。
elements()
返回一個迭代器,其中每個元素將重復出現計數值所指定次。元素會按首次出現的順序返回。如果一個元素的計數值小於1,elements()將會忽略它。
>>> c = Counter(a=4, b=2, c=0, d=-2)
>>> sorted(c.elements())
['a', 'a', 'a', 'a', 'b', 'b']most_common([n])
返回一個列表,其中包含n個最常見的元素及出現次數,按常見程度由高到低排序。如果n被省略或為None,most_common()將返回計數器中的所有元素。計數值相等的元素按首次出現的順序排序:
>>> Counter('abracadabra').most_common(3)
[('a', 5), ('b', 2), ('r', 2)]這兩個方法是Counter中最常用的方法,其他方法可以參考 python3.10.1官方文檔
實戰
Leetcode 1002.查找共用字元
給你一個字元串數組words,請你找出所有在words的每個字元串中都出現的共用字元(包括重復字元),並以數組形式返回。你可以按任意順序返回答案。
輸入:words = ["bella", "label", "roller"]
輸出:["e", "l", "l"]
輸入:words = ["cool", "lock", "cook"]
輸出:["c", "o"]看到統計字元,典型的可以用Counter完美解決。這道題是找出字元串列表裡面每個元素都包含的字元,首先可以用Counter計算出每個元素每個字元出現的次數,依次取交集最後得出所有元素共同存在的字元,然後利用elements輸出共用字元出現的次數
class Solution:
def commonChars(self, words: List[str]) -> List[str]:
from collections import Counter
ans = Counter(words[0])
for i in words[1:]:
ans &= Counter(i)
return list(ans.elements())提交一下,發現83個測試用例耗時48ms,速度還是不錯的
sorted
在處理數據過程中,我們經常會用到排序操作,比如將列表、字典、元組裡面的元素正/倒排序。這時候就需要用到sorted(),它可以對任何可迭代對象進行排序,並返回列表
對列表升序操作:
a = sorted([2, 4, 3, 7, 1, 9])
print(a)
# 輸出:[1, 2, 3, 4, 7, 9]對元組倒序操作:
sorted((4,1,9,6),reverse=True)
print(a)
# 輸出:[9, 6, 4, 1]使用參數:key,根據自定義規則,按字元串長度來排序:
fruits = ['apple', 'watermelon', 'pear', 'banana']
a = sorted(fruits, key = lambda x : len(x))
print(a)
# 輸出:['pear', 'apple', 'banana', 'watermelon']all
all() 函數用於判斷給定的可迭代參數iterable中的所有元素是否都為 TRUE,如果是返回 True,否則返回 False。元素除了是 0、空、None、False外都算True。注意:空元組、空列表返回值為True。
>>> all(['a', 'b', 'c', 'd']) # 列表list,元素都不為空或0
True
>>> all(['a', 'b', '', 'd']) # 列表list,存在一個為空的元素
False
>>> all([0, 1,2, 3]) # 列表list,存在一個為0的元素
False
>>> all(('a', 'b', 'c', 'd')) # 元組tuple,元素都不為空或0
True
>>> all(('a', 'b', '', 'd')) # 元組tuple,存在一個為空的元素
False
>>> all((0, 1, 2, 3)) # 元組tuple,存在一個為0的元素
False
>>> all([]) # 空列表
True
>>> all(()) # 空元組
Trueany函數正好和all函數相反:判斷一個tuple或者list是否全為空,0,False。如果全為空,0,False,則返回False;如果不全為空,則返回True。
F-strings
在python3.6.2版本中,PEP 498提出一種新型字元串格式化機制,被稱為 「字元串插值」 或者更常見的一種稱呼是F-strings,F-strings提供了一種明確且方便的方式將python表達式嵌入到字元串中來進行格式化:
s1='Hello'
s2='World'
print(f'{s1} {s2}!')
# Hello World!在F-strings中我們也可以執行函數:
def power(x):
return x*x
x=4
print(f'{x} * {x} = {power(x)}')
# 4 * 4 = 16而且F-strings的運行速度很快,比傳統的%-string和str.format()這兩種格式化方法都快得多,書寫起來也更加簡單。
本文主要講解了python幾種冷門但好用的函數,更多內容以後會陸陸續續更新~
7. python裡面有哪些自帶函數
python系統提供了下面常用的函數:
1. 數學庫模塊(math)提供了很多數學運算函數;
2.復數模塊(cmath)提供了用於復數運算的函數;
3.隨機數模塊(random)提供了用來生成隨機數的函數;
4.時間(time)和日歷(calendar)模塊提供了能處理日期和時間的函數。
注意:在調用系統函數之前,先要使用import 語句導入 相應的模塊
該語句將模塊中定義的函數代碼復制到自己的程 序中,然後就可以訪問模塊中的任何函數,其方 法是在函數名前面加上「模塊名.」。
希望能幫到你。
8. 二級Python----Python的內置函數及標准庫(DAY 8)
python的內置函數(68個)
Python考核31個內置函數,
python內置了很多內置函數、類方法屬性及各種模塊。當我們想要當我們想要了解某種類型有哪些屬性方法以及每種方法該怎麼使用時,我們可以使用dir()函數和help()函數在python idle互動式模式下獲得我們想要的信息。
• dir()函數獲得對象中可用屬性的列表
Python中的關鍵詞有哪些?
dir(__builtins__):查看python內置函數
help(『keywords『):查看python關鍵詞
如微分積分方程的求解程序、訪問互聯網、獲取日期和時間、機器學習演算法等。這些程序往往被收入程序庫中,構成程序庫。
只有經過嚴格檢驗的程序才能放在程序庫里。檢驗,就是對程序作充分的測試。通常進行的有正確性測試、精度測試、速度測試、邊界條件和出錯狀態的測試。經過檢驗的程序不但能保證計算結果的正確性,而且對錯誤調用也能作出反應。程序庫中的程序都是規范化的。所謂規范化有三重含義:①同一庫里所有程序的格式是統一的;② 對這些程序的調用方法是相同的;③ 每個程序所需參數的數目、順序和類型都是嚴格規定好的。
Python的庫包含標准庫和第三方庫
標准庫:程序語言自身擁有的庫,可以直接使用。help('moles')
第三方庫:第三方者使用該語言提供的程序庫。
標准庫: turtle 庫(必選)、 random 庫(必選)、 time 庫(可選)。
• turtle 庫:圖形繪制庫
原理如同控制一隻海龜,以不同的方向和速度進行位移而得到其運動軌跡。
使用模塊的幫助時,需要先將模塊導入。
例如:在IDLE中輸入import turtle
dir(turtle)
help(turtle.**)
1.畫布
畫布就是turtle為我們展開用於繪圖區域, 我們可以設置它的大小和初始位置。
setup()方法用於初始化畫布窗口大小和位置,參數包括畫布窗口寬、畫布窗口高、窗口在屏幕的水平起始位置和窗口在屏幕的垂直起始位置。
參數:width, height: 輸入寬和高為整數時,表示 像素 ;為小數時,表示占據電腦屏幕的比例。(startx,starty):這一坐標表示
矩形窗口左上角頂點的位置,如果為空,則窗口位於屏幕中心:
例如:setup(640,480,300,300)表示在桌面屏幕(300,300)位置開始創建640×480大小的畫布窗體。
2、畫筆
• color() 用於設置或返回畫筆顏色和填充顏色。
例如:color(『red』)將顏色設為紅色,也可用fillcolor()方法設置或返回填充顏色,或用pencolor()方法設置或返回筆觸顏色。
9. 68 個 Python 內置函數詳解
內置函數就是Python給你提供的,拿來直接用的函數,比如print.,input等。
截止到python版本3.6.2 ,python一共提供了68個內置函數,具體如下
本文將這68個內置函數綜合整理為12大類,正在學習Python基礎的讀者一定不要錯過,建議收藏學習!
(1)列表和元組
(2)相關內置函數
(3)字元串
frozenset 創建一個凍結的集合,凍結的集合不能進行添加和刪除操作。
語法:sorted(Iterable, key=函數(排序規則), reverse=False)
語法:fiter(function. Iterable)
function: 用來篩選的函數. 在filter中會自動的把iterable中的元素傳遞給function. 然後根據function返回的True或者False來判斷是否保留留此項數據 , Iterable: 可迭代對象
搜索公眾號頂級架構師後台回復「面試」,送你一份驚喜禮包。
語法 : map(function, iterable)
可以對可迭代對象中的每一個元素進行映射. 分別去執行 function
hash : 獲取到對象的哈希值(int, str, bool, tuple). hash演算法:(1) 目的是唯一性 (2) dict 查找效率非常高, hash表.用空間換的時間 比較耗費內存
10. python 內置排序函數使用
python內置關於排序的工具主要有兩個一個是列表自帶的 sort() 方法,另外一個是 sorted() 函數。Python 列表內置方法可以直接修改列表。而 sorted() 內置函數從一個可迭代對象(列表,元組等都可以)構建一個新的排序列表。其函數原型分別如下:
對列表進行默認排序
從函數原型來看,可以看到兩者都具有兩個可選參數,它們都必須指定為關鍵字參數。
key 指定帶有單個參數的函數,用於從 iterable 的每個元素中提取用於比較的鍵 (例如 key=str.lower)。默認值為 None (直接比較元素)。 key 形參的值應該是個函數(或其他可調用對象),它接受一個參數並返回一個用於排序的鍵。
假設有其他類型的變數,比如一個自定義的類或者列表中又是一個列表。以官網例子為例有這樣一個列表,其元素為元組,
可以用以下方式按照年齡排序
類似的有自定義類
可以用如下方式進行排序
也可以顯示定義一個函數,且只有一個參數,返回用於排序的鍵,比如
總之就是定義一個函數返回一個用於排序的鍵,可以用lambda函數或者 def 定義都可以。
上面實現的簡單函數實際就是實現了返回一個有序結構的第 n 的元素,或者某個類中的某個屬性,因此 Python 提供了便利功能,使訪問器功能更容易,更快捷。operator 模塊有 itemgetter() 、 attrgetter() 函數。分別完成返回第 n 個元素,某個屬性功能。上面的排序可以用如下方式進行實現
在python2中,sort有一個 cmp 參數,即用一個函數來自定義比較,在python3中這種方式被取消。為了繼承類似的用法,在 Python 3.2 中, functools.cmp_to_key() 函數被添加到標准庫中的 functools 模塊中。
這種作用先定義如何比較兩個變數,以上面的學生列表按照年齡排序為例
這種做法自定義比較函數接收兩個形參,返回比較結果(bool),而新式方法接受一個參數,返回的是比較的鍵。
假設有字典 d = {'b':2, 'a':1,'c':8,'d':4} ,則可以通過以下方式對字典按照鍵和值進行排序