一、函數名能夠進行賦值;html
二、函數名能夠做爲函數參數,還能夠做爲函數的返回值;python
a、函數是第一類對象app
b、函數能夠被賦值ide
c、能夠被當作參數函數
d、能夠當作返回值spa
e、能夠做爲容器類型的元素code
def f(n): return n*n def foo(a,b,func): ret = func(a) + func(b) return ret foo(1,2,f) print(foo(1,2,f)) #傳入參數a=1,b=2,func=f; #ret = f(1) + f(2); #f(1)=1,f(2)=4此時調用f函數; #ret=5;
描述orm
map() 會根據提供的函數對指定序列作映射。htm
第一個參數 function 以參數序列中的每個元素調用 function 函數,返回包含每次 function 函數返回值的新列表。對象
語法
map() 函數語法:
map(function, iterable, ...)
參數
返回值
Python 2.x 返回列表。
Python 3.x 返回迭代器。
實例
>>>def square(x) : # 計算平方數 ... return x ** 2 ... >>> map(square, [1,2,3,4,5]) # 計算列表各個元素的平方 [1, 4, 9, 16, 25] >>> map(lambda x: x ** 2, [1, 2, 3, 4, 5]) # 使用 lambda 匿名函數 [1, 4, 9, 16, 25] # 提供了兩個列表,對相同位置的列表數據進行相加 >>> map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10]) [3, 7, 11, 15, 19]
msg = [1,12,33,42,15,16] #需求自增1 def add_one(x): return x+1 #需求自減1 def reduce(x): return x-1 #需求平方 def pf(x): return x**2 #實現邏輯 def fangfa(func,red): ret = [] for i in red: res = func(i) ret.append(res) return ret print(fangfa(add_one,msg)) print(fangfa(reduce,msg)) print(fangfa(pf,msg)) print(fangfa(lambda x:x+1,msg)) #用lambda函數替換add_one函數 print(fangfa(lambda x:x-1,msg)) #用lambda函數替換requce函數 print(fangfa(lambda x:x**2,msg))#用lambda函數替換pf函數 print(list(map(lambda x:x+1,msg))) #map處理的結果是一個可迭代對象,python3中需用list轉換; print(list(map(lambda x:x-1,msg))) #map的第一個參數是邏輯,第二個參數是可迭代對象; print(list(map(lambda x:x**2,msg)))
描述
filter() 函數用於過濾序列,過濾掉不符合條件的元素,返回由符合條件元素組成的新列表。
該接收兩個參數,第一個爲函數,第二個爲序列,序列的每一個元素做爲參數傳遞給函數進行判,而後返回 True 或 False,最後將返回 True 的元素放到新列表中。
語法
如下是 filter() 方法的語法:
filter(function, iterable)
參數
返回值
返回列表
實例
如下展現了使用 filter 函數的實例:
def is_odd(n): return n % 2 == 1 newlist = filter(is_odd, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) print(newlist) [1, 3, 5, 7, 9]
lise_l = ["sb_asd","sb_we","sb_ig","rng"] #需求去掉開頭是sb的 def sh_show(n): return n.startswith("sb") #實現邏輯 def filter_test(func,array): red = [] for i in array: if not sh_show(i): red.append(i) return red print(filter_test(sh_show,lise_l)) print(filter_test(lambda n:n.startswith("sb"),lise_l))#lambda print(list(filter(lambda n:not n.startswith("sb"),lise_l)))#filter
描述
reduce() 函數會對參數序列中元素進行累積。
函數將一個數據集合(鏈表,元組等)中的全部數據進行下列操做:用傳給 reduce 中的函數 function(有兩個參數)先對集合中的第 一、2 個元素進行操做,獲得的結果再與第三個數據用 function 函數運算,最後獲得一個結果。
在 Python3 中,reduce() 函數已經被從全局名字空間裏移除了,它如今被放置在 fucntools 模塊裏,若是想要使用它,則須要經過引入 functools 模塊來調用 reduce() 函數:
from functools import reduce
from functools import reduce def add(x,y): return x + y print (reduce(add, range(1, 101)))
語法
reduce() 函數語法:
reduce(function, iterable[, initializer])
參數
返回值
返回函數計算結果。
實例
如下實例展現了 reduce() 的使用方法:
>>>def add(x, y) : # 兩數相加 ... return x + y ... >>> reduce(add, [1,2,3,4,5]) # 計算列表和:1+2+3+4+5 15 >>> reduce(lambda x, y: x+y, [1,2,3,4,5]) # 使用 lambda 匿名函數 15
python的內置函數
print(abs(-1))#取絕對值 print(all([1,2,3]))#用於判斷給定的可迭代參數 iterable 中的全部元素是否都爲 TRUE,若是是返回 True,不然返回 False。元素除了是 0、空、FALSE 外都算 TRUE。 print(any([1,2,3]))#用於判斷給定的可迭代參數 iterable 是否所有爲 False,則返回 False,若是有一個爲 True,則返回 True。元素除了是 0、空、FALSE 外都算 TRUE。 print(bin(10))#返回一個整數 int 或者長整數 long int 的二進制表示。 print(hex(10))#用於將10進制整數轉換成16進制,以字符串形式表示。 print(oct(10))#函數將一個整數轉換成8進制字符串。 print(chr(97))#返回值是當前整數對應的ascii字符。 print(bool(0))#用於將給定參數轉換爲布爾類型,若是沒有參數,返回 False。 print(dict(a="1"))#用於建立一個字典 print(dir(list))#函數不帶參數時,返回當前範圍內的變量、方法和定義的類型列表;帶參數時,返回參數的屬性、方法列表。若是參數包含方法__dir__(),該方法將被調用。若是參數不包含__dir__(),該方法將最大限度地收集參數信息。 print(divmod(10,3))#函數把除數和餘數運算結果結合起來,返回一個包含商和餘數的元組(a // b, a % b)。 print(list(enumerate(["lw","xa","ww"])))#用於將一個可遍歷的數據對象(如列表、元組或字符串)組合爲一個索引序列,同時列出數據和數據下標,通常用在 for 循環當中。 print(eval("2+2"))#用來執行一個字符串表達式,並返回表達式的值。 def is_odd(n): return n % 2 == 1 newlist = filter(is_odd, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])#用於過濾序列,過濾掉不符合條件的元素,返回由符合條件元素組成的新列表。該接收兩個參數,第一個爲函數,第二個爲序列,序列的每一個元素做爲參數傳遞給函數進行判,而後返回 True 或 False,最後將返回 True 的元素放到新列表中。 print(list(newlist)) print(float(1))#用於將整數和字符串轉換成浮點數。 #"{1} {0} {1}".format("hello", "world") # 設置指定位置,format 函數能夠接受不限個參數,位置能夠不按順序。 print(globals())#以字典類型返回當前位置的所有全局變量。 print(hash("test"))#用於獲取取一個對象(字符串或者數值等)的哈希值。 print(help(dict))#用於查看函數或模塊用途的詳細說明。 print(id(list))#用於獲取對象的內存地址。 print(int("13",8))#用於將一個字符串或數字轉換爲整型。8表明進制數; print(len("asdfghj"))#返回對象(字符、列表、元組等)長度或項目個數。 print(max(10,90,1000))#返回給定參數的最大值,參數能夠爲序列。 print(min(10,90,1000))#返回給定參數的最小值,參數能夠爲序列。 p = {"name":"alex","age":18,"hobby":"gilr"} print(list(zip(p.keys(),p.values())))#拉鍊函數,兩個參數均爲序列,用於將可迭代的對象做爲參數,將對象中對應的元素打包成一個個元組,而後返回由這些元組組成的列表。
max和min高級用法:
用法
一、max進行比較時傳入的數據類型必須是可迭代對象(基本原理就是一個for循環依次取出可迭代對象中的每個元素進行比較);
二、比較時從第一個元素進行比較(按ascii碼進行排序),若是第一個元素分出大小則後面就不進行比較了;
ll = ["10a","A20","A10"] print(max(ll)) A20
msg = {"age1":18,"age2":20} print(max(zip(msg.values(),msg.keys()))) (20, 'age2')
people = [ {"name":"alex","age":70}, {"name":"wpq","age":100}, {"name":"lhf","age":30}, {"name":"lw","age":50} ] print(max(people,key=lambda dic:dic["age"])) #傳入key參數