Python内置函数教程
1 .filter(function, sequence):
對sequence中的item依次執行function(item),將執行結果為True的item做成一個filter object的迭代器返回。可以看作是過濾函數。
str = ['a', 'b','c', 'd']def fun1(s):if s != 'a':return sret = filter(fun1, str)print(list(ret))# ret是一個迭代器對象2.map(function, sequence)
map()函數,可以將一個函數映射到一個可以枚舉類型上面。對sequence中的item依次執行function(item),將執行結果組成一個List返回
另外map也支持多個sequence,當然這也要求function支持相應數量的參數輸入。
str = ['a', 'b','c','d']def fun2(s):return s + "alvin"ret = map(fun2, str)print(ret) # map object的迭代器 print(list(ret))# ['aalvin', 'balvin', 'calvin', 'dalvin'] >>> def cube(x): return x*x*x >>> map(cube, range(1, 11)) [1, 8, 27, 64, 125, 216, 343, 512, 729, 1000] >>> def cube(x) : return x + x>>> def add(x, y): return x+y >>> map(add, range(8), range(8)) [0, 2, 4, 6, 8, 10, 12, 14]對sequence中的item依次執行function(item),將執行結果組成一個map object迭代器返回.
map也支持多個sequence,這就要求function也支持相應數量的參數輸入:
3.reduce(function, sequence, starting_value)
對sequence中的item順序迭代調用function,如果有starting_value,還可以作為初始值調用.
from functools import reducedef add1(x,y):return x + yprint (reduce(add1, range(1, 101)))## 4950 (注:1+2+...+99)print (reduce(add1, range(1, 101), 20))## 4970 (注:1+2+...+99+20)對sequence中的item順序迭代調用function,如果有starting_value,還可以作為初始值調用,例如可以用來對List求和,示例如下:
>>> def add(x,y): return x + y>>> reduce(add, range(1, 11)) (注:1+2+3+4+5+6+7+8+9+10) >>> reduce(add, range(1, 11), 20) (注:1+2+3+4+5+6+7+8+9+10+20)4.lambda
它允許你快速定義單行的最小函數(其本質就是函數),類似C語言中的宏,可以用在任何需要函數的地方,示例如下:
>>> g = lambda x: x * 2 >>> g(3) 6 >>> (lambda x: x * 2)(3) 6普通函數與匿名函數的對比:
#普通函數 def add(a,b):return a + bprint add(2,3)#匿名函數 add = lambda a,b : a + b print add(2,3)#========輸出=========== 5 5匿名函數的命名規則,用lamdba 關鍵字標識,冒號(:)左側表示函數接收的參數(a,b) ,冒號(:)右側表示函數的返回值(a+b)。
因為lamdba在創建時不需要命名,所以,叫匿名函數
5.int64和int的區別?
int是Python的基本類型,而int64是numpy中引入的一個類,即numpy.int64;
使用numpy模塊中的numpy.sum()方法得到的結果是Int64,而使用默認的sum()得到的結果是Int類型。
下面代碼中,雖然執行結果a和b的數值都是6,但是類型不同。
import numpy as np# a 的類型是int64a = np.sum([1,2,3])# b 的類型是intb = sum([1,2,3])int64不會報除0的錯誤(事實上numpy中的其他類型也不會報錯,比如float64等);而int會報除0錯誤(其他基本類型也會,比如float等)
6.sorted函數
對sequence進行排序,直接看例子:
>>> s = [('a', 3), ('b', 2), ('c', 1)]>>> sorted(s, key=lambda x:x[1]) s = [('a', 3), ('b', 2), ('c', 1)]更多例子:
''' 學習中遇到問題沒人解答?小編創建了一個Python學習交流QQ群:725638078 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' >>> l = ['foo', 'bar', 'far'] >>> map(lambda x: x.upper(), l) ['FOO', 'BAR', 'FAR'] >>> filter(lambda x: 'f' in x, l) ['foo', 'far'] >>> map(lambda x: x.upper(), filter(lambda x: 'f' in x, l)) ['FOO', 'FAR'] >>> reduce(lambda a, b: a * b, xrange(1, 5)) # 計算 1*2*3*4 = 24 247.序列解包(for x,y in zip(keys,values):)詳解
序列解包是一個非常重要和常用的一個功能,使用序列解包可以用非常簡潔的方法完成復雜的功能。增強代碼的可讀性,減少代碼量。
zip函數接受多個(包括0個和1個)序列作為參數,返回一個tuple列表。
(1 使用序列解包對多個變量同時進行賦值
a, b, c = 1, 2, 3 print(a, b, c)test_tuple = (False, 3.5, 'test') d, e, f = test_tuple print(d, e, f)x, y, z = map(str, range(3))print(x, y, z)輸出結果為:
1 2 3 False 3.5 test 0 1 2(2 序列解包也可以用于列表和字典
字典的話默認是對“key” 進行操作,如需對“key”----“value” 進行操作則需要使用字典的items()方法進行操作。“value” 進行操作的話就使用values進行操作。
#列表進行解包 a = [1, 2, 3, 5, 6] b, c, d, f, g = a print(b, c, d, f, g)print('---------------------------')#字典進行解包 test_dicts = {'a': 'x', 'b': 1, 'c': 3}q, w, e = test_dicts r, t, y = test_dicts.items() i, o, p = test_dicts.values()print(q, w, e) print(r, y, t) print(i, o, p)輸出結果:
1 2 3 5 6 --------------------------- a b c ('a', 'x') ('c', 3) ('b', 1) x 1 3(3 用序列解包同時遍歷多個序列
list_1 = [1, 2, 3, 4] list_2 = ['a', 'b', 'c']for x, y in zip(list_1, list_2):print(x, y)結果:
1 a 2 b 3 c(4 Python3.x和Python2.x在zip函數的區別
x = [1, 2, 3] y = [4, 5, 6] z = [7, 8, 9] #注意:Python3.x和Python2.x這里的差別 #Python3.x xyz = list(zip(x, y, z)) #Python2.x #xyz = zip(x, y, z) print(xyz) #輸出結果:[(1, 4, 7), (2, 5, 8), (3, 6, 9)]結尾給大家推薦一個非常好的學習教程,希望對你學習Python有幫助!
Python基礎入門教程推薦:←點擊左邊藍色文字就可以跳轉觀看了
Python爬蟲案例教程推薦:←點擊左邊藍色文字就可以跳轉觀看了
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的Python内置函数教程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python函数中4种参数的使用
- 下一篇: 整理了7道Python函数的练习题,希望