標籤:列表 函數返回 close 存在 接受 函數 ted for sed
函數式編程
用一系列函數解決問題
傳入參數一定,結果必一定(只有一個輸入一個輸出)
1 def myadd(x, y):# 不可重新進入函數:2 return x + y3 y = 2004 def myadd2(x):#可重新進入函數5 return x + y6 print(myadd2(10)) # 2107 y = 3008 print(myadd2(10)) # 310
函數式編程的要求:
建立函數最好不要訪問局部範圍以外的變數,這樣可以保證返回結果的唯一性(可重新進入性)
高階函數
滿足下麵條件之一的為高階函數:
1、函數接受一個或者多個函數作為參數傳入
2、函數返回一個函數
python內建的高階函數:
map、filter、sorted
map函數:
第一個參數 function 以參數序列中的每一個元素調用 function 函數,返回包含每次 function 函數傳回值的新列表。
格式:
map(func,iterables1,,iterables2,.........)
參數:
- function -- 函數,有一個或兩個參數
- iterable -- 一個或多個序列
傳回值
- Python 2.x 返回列表。
- Python 3.x 返回迭代器
1 def power(x): 2 return x**2 3 # for x in map(power,range(1,10)): 4 # print(x) 5 # for x in map(lambda x :x**2,range(1,10)): 6 # print(x) 7 print(list(map(power,range(1,10)))) 8 #[1, 4, 9, 16, 25, 36, 49, 64, 81] 9 10 # 提供了兩個列表,對相同位置的列表資料進行相加11 print(list(map(lambda x,y:x+y,[1,2,3,4],[4,3,2,1])))12 #[5, 5, 5, 5]13 #必須要加list,不加list返回的是記憶體位址14 #<map object at 0x0000022754376278>15 16 #求:1 ** 9 + 2 ** 8 + 3 ** 7 + ......9 ** 117 s = 018 for x in map(pow, range(1, 10), range(9, 0, -1)):19 s += x20 print(s)
map(function,iterable...)
filter函數:
函數用於過濾序列,過濾掉不合格元素,返回由符合條件元素組成的新列表。
該接收兩個參數,第一個為函數,第二個為序列,序列的每個元素作為參數傳遞給函數進行判,然後返回 True 或 False,最後將返回 True 的元素放到新列表中。
文法:
filter(function,iterable)
參數:
function——判斷函數
iterable——可迭代函數
此處插入代碼1
此處插入代碼2
sorted函數:
將原可迭代對象的資料進行排序,產生排序後的列表
sort與sorted區別:
sort是應用在列表list上的方法,sorted可以對可迭代的對象進行排序操作,list 的 sort 方法返回的是對已經存在的列表進行操作,而內建函數 sorted 方法返回的是一個新的 list,而不是在原來的基礎上進行的操作。
文法
sorted(iterable,key,reverse)
iterable:可迭代對象
key:主要用來進行元素比較,只有一個參數,具體的函數的參數就是取值與可迭代對象中,指定可迭代對象中的一個元素來進行排序
reverse:定序,reverse = True 降序 , reverse = False 升序(預設)
傳回值:
返回重新排序的列表
python 高階函數