標籤:ros key microsoft 比較 inf oat ali syn trace
Python提供了一個內聯模組buildin。內聯模組定義了一些開發中經常使用的函數,利用這些函數可以實現資料類型的轉換、資料的計算、序列的處理等功能。下面將介紹內聯模組中的常用函數。
Python內建函數的基本用法可以查看Python安裝目錄下的doc目錄下的說明文檔,本文僅介紹Python典型的內建函數使用方法。
reduce(function, iterable[, initializer]) 對序列的值進行累計計算
reduce()可以實現對序列進行連續處理的功能。reduce()的聲明如下:
reduce(function, sequence[, initial]) -> value
下面代碼示範了reduce(連續處理的功能。
(1)實現對指定列表數字進行累加。
>>> reduce(lambda x, y: x+y, [1, 2, 3, 4, 5])15
(2)指定initial值,再執行列表數字累加操作
>>> reduce(lambda x, y: x+y, [1, 2, 3, 4, 5], 15)30
filter(function, iterable) 使用指定方法對序列過濾可迭代對象的元素
filter()可以對某個序列做過濾處理,判斷自訂函數的參數返回的結果是否為真來過濾,並一次性返回處理結果。filter()的聲明如下:
filter(function or None, sequence) -> list, tuple, or string
下面這段代碼示範了filter()過濾序列的功能,從給定的列表中過濾出大於0的數字。
>>> filter(lambda x:x>0,range(-9,10))[1, 2, 3, 4, 5, 6, 7, 8, 9]
map(function, iterable, ...) 使用指定方法處理傳入的每個可迭代對象的元素,產生新的可迭代對象
map()可以對多個序列的每個元素都執行相同的操作,並返回一個map對象。map()的聲明如下所示:
map(function, sequence[, sequence, ...]) -> list
下面代碼示範了map()函數處理的功能,
(1)函數只有1個參數,傳入1個序列。求指定序列每個元素的平方
>>> map(lambda x:x*x,range(1,10))[1, 4, 9, 16, 25, 36, 49, 64, 81]
說明:map()函數傳入序列的個數需要與map中第1個參數的函數參數個數要一致。否則會報報錯。如下
>>> map(lambda x:x*x,range(1,10),range(1,10))Traceback (most recent call last): File "<stdin>", line 1, in <module>TypeError: <lambda>() takes exactly 1 argument (2 given)
(2)求2個序列元素的相加後的值。兩個序列的元素個數一致。
>>> map(lambda x,y:x+y,range(1,10),range(11,20))[12, 14, 16, 18, 20, 22, 24, 26, 28]
上述例子中傳入map()函數的2個序列元素個數一致,每個序列中的元素一一對應進行計算。如果每個序列的長度不相同,則短的序列後會補充None,再進行計算。
enumerate(sequence, start=0) 根據可迭代對象建立枚舉對象
enumerate()通常用於將一個可遍曆的資料對象(如列表、元組或字串),以列表形式返回,列表中的元素為索引和值組成的元組。
seasons = [‘Spring‘, ‘Summer‘, ‘Fall‘, ‘Winter‘]for index,value in enumerate(seasons): print index,value
輸出結果如下:
0 Spring1 Summer2 Fall3 Winter
isinstance(object, classinfo) 判斷對象是否是類或者類型元組中任意類元素的子類
>>> num = 2>>> isinstance (num, int)True>>> isinstance (num,str)False>>> isinstance (num,(str,int,list))True
raw_input([prompt])/input([prompt]) 擷取控制台的輸入
raw_input([prompt])/input([prompt]) 函數都可以用於擷取控制台的輸入 ,二者的使用區別如下:
(1)raw_input()將所有輸入作為字串看待,返回字串類型。而input()在對待純數字輸入時具有自己的特性,它返回所輸入的數位類型(int, float)。
(2)二者均能接收字串,但raw_input()直接讀取控制台的輸入(任何類型的輸入它都可以接收)。而對於input(),它希望能夠讀取一個合法的 python 運算式,即你輸入字串的時候必須使用引號將它括起來,否則它會引發一個 SyntaxError 。
(1)同為輸入數字,擷取時類型不同
>>> num = raw_input(‘Please input a number:‘)Please input a number:23>>> type(num)<type ‘str‘>>>> print num23>>> num = input(‘Please input a number:‘)Please input a number:23>>> type(num)<type ‘int‘>>>> print num23
(2)輸入字串,二者輸入方式不同
>>> str = raw_input(‘Please input a string:‘)Please input a string:hello>>> print strhello>>> str = input(‘Please input a string:‘)Please input a string:‘hello‘>>> print strhello
如果使用input()函數使用不帶引號的方式輸入,函數拋出NameError錯誤,如下
>>> str = input(‘Please input a string:‘)Please input a string:helloTraceback (most recent call last): File "<stdin>", line 1, in <module> File "<string>", line 1, in <module>NameError: name ‘hello‘ is not defined
sorted(iterable[, cmp[, key[, reverse]]]) 返回一個排序後的列表
sorted()函數用於排序指定序列。返回結果是1個新的序列,不會在原序列上進行操作。sorted()的聲明如下:
sorted(iterable, cmp=None, key=None, reverse=False) --> new sorted list
參數說明:
iterable 可迭代對象。cmp 比較函數,cmp()有兩個參數,參數的值都是從可迭代對象中取出。key 主要是用來進行比較的元素,只有一個參數,指定可迭代對象中的一個元素來進行排序。reverse 定序,reverse = True 降序 , reverse = False 升序(預設)。
(1)對指定列表進行排序
>>> lst = [5,7,6,3,4,1,2]>>> lst_sorted = sorted(lst)>>> lst[5, 7, 6, 3, 4, 1, 2]>>> lst_sorted[1, 2, 3, 4, 5, 6, 7]
(2)對指定序列進行排序,cmp參數的使用。
>>> lst = [(‘b‘,2),(‘a‘,1),(‘c‘,3),(‘d‘,4)]>>> lst_sorted = sorted(lst, cmp=lambda x,y:cmp(x[1],y[1]))>>> print lst_sorted[(‘a‘, 1), (‘b‘, 2), (‘c‘, 3), (‘d‘, 4)]
(3)key參數的使用,
>>> lst_sorted = sorted(lst, key = lambda x:int(x.split(‘ ‘)[0].split(‘.‘)[3]))>>> print lst_sorted[‘192.168.0.1 Success‘, ‘192.168.0.2 Success‘, ‘192.168.0.10 Fail‘]
(4)reverse參數的使用。
>>> lst = [‘192.168.0.1 Success‘,‘192.168.0.10 Fail‘,‘192.168.0.2 Success‘]>>> lst_sorted = sorted(lst, key = lambda x:int(x.split(‘ ‘)[0].split(‘.‘)[3]), reverse=True)>>> print lst_sorted[‘192.168.0.10 Fail‘, ‘192.168.0.2 Success‘, ‘192.168.0.1 Success‘]
Python常用內建函數介紹