map filter reduce
阿新 • • 發佈:2018-08-31
rom docstring 不用 官方 from 添加 數字 元素 過濾
# map
# map : what why how
# http://devdocs.io/python~3.6/library/functions#map 官方文檔
# 返回一個叠代器,該叠代器將函數應用到可叠代的每一項,從而產生結果
# 不用for循環,就能將序列中的數據一一映射到給定的處理函數,快速對一個序列的數據進行各種操作
# 是代碼更簡單
map? """Init signature: map(self, /, *args, **kwargs) Docstring: map(func, *iterables) --> map object 函數用--------------------> 返回的map對象 """
num = [1,3,5,7,9]
# for 循環
new_num = []
for i in num:
y = i + 1
new_num.append(y)
print(new_num)
[2, 4, 6, 8, 10]
# map
def add(x):
return(x+1)
map(add, num)
<map at 0x14d150489e8>
list(map(add, num))
[2, 4, 6, 8, 10]
# 字符串處理 str_list = [‘lilei‘, ‘coop‘, ‘hanmei‘] def change(s:str): return s.capitalize() list(map(change, str_list))
[‘Lilei‘, ‘Coop‘, ‘Hanmei‘]
# filter
# 從可叠代的元素中構造一個叠代器,函數返回true,iterable可以是一個序列,一個支持叠代的容器
# 或者一個叠代器,如果函數為None,則假定表示函數為false,即false的所有元素都被刪除
# 不用for循環,就能將序列中數據一一映射到給定的處理函數,函數中添加了真假判斷,True則返回
# 相應的數據,最終得到篩選後的序列,使得代碼更簡單
my_list = [11,22,33,44,55,343,66,77] new_list = [] for i in my_list: if 20 < i < 60: new_list.append(i) print(new_list)
[22, 33, 44, 55]
# filter 首先是構造一個過濾田間的函數,然後才能使用filter
def choose(x):
if 20 < x < 50:
return True
def choose1(y):
return 20< y < 50
filter(choose, my_list)
list(filter(choose, my_list))
[22, 33, 44]
# 字符串處理
str_list = [‘lilei‘,‘coop‘,‘coop2‘,‘hanmemei‘,‘china‘]
import re
def coop(s:str):
return re.search(‘coop‘, s)
filter(coop, str_list)
list(filter(coop, str_list))
[‘coop‘, ‘coop2‘]
# reduce 處理數字列表的連乘, 累加
# 將兩個
from functools import reduce
num = [1,3,5,7,9]
sum = 0
for i in num:
sum += i
print(sum)
25
sum = 1
for i in num:
sum *= i
print(sum)
945
# 定義函數
def sum(x, y):
return x + y
def cheng(x, y):
return x * y
reduce(sum, num)
25
reduce(cheng, num)
945
map filter reduce