標籤:替換 等於 ring instance filter zip lambda 方法 資料轉換
內建函數,Python內建的函數(build in function),不需要引用其他包,一般成為BIF abs() 計算絕對值,abs(-10),接收number,返回一個number max() 求序列的的最大值(可迭代的),同時也可以比較一些數字 min() 求序列的最小值(可迭代的),同時也可以比較一些數字 len() 求序列的長度,(字典也可以,求index的個數) divmod(x,y) 求x,y的商和餘數,存放在元組中 pow(x,y,z) 求x的y次方,如果有第三個參數,那麼把前面的結果和第三個參數求餘 round(number) 用來四折五入,後面可以跟精度(先把number編程浮點數,然後看保留幾位) 例子: 把12.45轉換成float,那麼就不是12.45了,而可能是12.4999999了 callable() 判斷一個對象是否是可調用的,比如函數,類都是可以調用的,但是變數無法調用 type() 查看對象的類型 isinstance(對象,類型) 判斷一個對象是否是給定類型。類型可以是多個,只要是其中1個即可(類型1,類型2)
a=‘213‘isinstance(a,str)返回True
cmp(x,y) 比較兩個對象的大小,x大於y返回1,x等於y返回-1,x小於y返回-1,字串也可以比較,是按單個字元的大小開始比對。 str() 可以把任何資料轉換成字串(字典,元組,也會直接輸出) hex(10) 把10進位轉換為8進位 eval() 把字串當做一個有效運算式來求值
eval(‘1+2‘) 返回3eval("[1,2,3]") 返回[1,2,3] oct() 把10進位轉換為8進位 chr(i) i的範圍是0~255,求i對應的acsii碼值 ord(i) i的範圍是ascii的值,求對應的值 字串處理的相關函數(方法)a.capitalize() 對字串a進行首字母大寫,首字母是數字則不變 a.replace(old,new,[count]) 把舊的字串,替換為新的字串,count 可以去指定替換幾次 a.split(分隔字元,[切幾次]) 把字串進行分隔,返回的是一個列表,預設是空格或tab鍵分隔(有幾個空格無所謂,全都當成1個) 分隔字元.join(可迭代的對象) 返回一個字串,把可迭代的對象轉串連成字串,用分隔字元來分隔 string模組,需要匯入string模組(import string)string.lowercasestring.uppercase 列印所有的大小寫字母 string.capitalize(‘hello‘) 把第一個字串替換為大寫string.replce(‘hello‘,‘l‘,‘a‘) 把hello中的,l替換為a filter(函數或空,序列) 用來過濾,把序列的每一個元素,交給函數來處理。如果為None,則什麼也不做,直接輸出(序列),如果有函數,那麼只有函數的傳回值為True才列印序列中的元素 例子:
def even(n): if n % 2 == 0: return Truefilter(even,xrange(10))[0, 2, 4, 6, 8]
進階寫法:
filter(lambda x: x%2 ==0,xrange(10)
zip(seq1,seq2,seqN...) 把seq1和seq2組合成1個大的列表,每個序列取1個組成元組,存放在整合後的列表中,如果序列的長度不同,那麼就以最小的序列的長度為基準。 map(func,seq1,seq2) 返回也是一個列表,func可以是一個函數也可以是個None,如果為None,那麼返回的列表長度以當前最長列表為基準,依舊是依次去每個列表中去取,只不過沒有的,用none補充 例子:
l1 = [1, 2, 3]l2 = [‘a‘, ‘b‘, ‘c‘, ‘d‘]l3 = [‘I‘, ‘II‘, ‘III‘, ‘IV‘, ‘V‘, ‘VI‘]map(None,l1,l2,l3)[(1, ‘a‘, ‘I‘),(2, ‘b‘, ‘II‘),(3, ‘c‘, ‘III‘),(None, ‘d‘, ‘IV‘),(None, None, ‘V‘),(None, None, ‘VI‘)]
如果函數位上是一個函數,那麼如果只有1列表,那麼就需要這個函數定義1個參數,然後每次把列表中的1個元素交給函數進行處理,並列印如果需要處理兩個序列,那麼函數就必須定義2個參數,去接受這兩個序列的元素。進階應用程式:
map(lambda x,y:x+y,l1,l4)
reduce(func,seq) 只能定義1個序列,然後傳遞給func進行處理。(lambda函數求累加)
Python-內建函數小結