day16 函式式程式設計和內建函式

2021-10-10 12:33:43 字數 4847 閱讀 1863

程式設計的方**

面向過程:找到問題的 

函式式:不可變、不用變數儲存狀態、不修改變數

物件導向: 

高階函式:

滿足倆個特性任意乙個即為高階函式

1.函式的傳入引數是乙個函式名

2.函式的返回值是乙個函式名

map函式:

num_l=[1,2,10,5,3,7]# 計算該列表中數的平方值

方法一:

# ret=

# for i in num_l:

# print(ret)

方法二:

def map_test(array):

ret=

for i in num_l:

return ret

ret=map_test(num_l)

print(ret)

方法三:

#大寫轉換

msg='wuxiping'

print(list(map(lambda x:x.upper(),msg)))

filter函式:

# movie_people=['sb_alex','sb_wupeiqi','linhaifeng','sb_yuanhao']

# def filter_test(array):

# ret=

# for p in array:

# if not p.startswith('sb'):

# return ret

# print(filter_test(movie_people))

# movie_people=['alex_sb','wupeiqi_sb','linhaifeng','yuanhao_sb']

# def sb_show(n):

# return n.endswith('sb')

# def filter_test(func,array):

# ret=

# for p in array:

# if not func(p):

# return ret

# res=filter_test(sb_show,movie_people)

# print(res)

#終極版本

movie_people=['alex_sb','wupeiqi_sb','linhaifeng','yuanhao_sb']

# def sb_show(n):

# return n.endswith('sb')

#lambda n:n.endswith('sb')

def filter_test(func,array):

ret=

for p in array:

if not func(p):

return ret

res=filter_test(lambda n:n.endswith('sb'),movie_people)

print(res)

#filter函式

movie_people=['alex_sb','wupeiqi_sb','linhaifeng','yuanhao_sb']

#print(filter(lambda n:n not n.endswith('sb',movie_people)))

res=filter(lambda n:not n.endswith('sb'),movie_people)

print(list(res))

reduce函式:

from functools import reduce

# num_l=[1,2,3,100]

# res=0

# for num in num_l:

# res+=num

# print(res)

#相加# num_l=[1,2,3,100]

# def reduce_test(array):

# res=0

# for num in num_l:

# res+=num

# return res

# print(reduce_test(num_l))

#相乘# num_l=[1,2,3,100]

# def reduce_test(func,array):

# res=array.pop(0)

# for num in array:

# res=func(res,num)

# return res

# print(reduce_test(lambda x,y:x*y,num_l))

# 指定初始值

# num_l=[1,2,3,100]

# def reduce_test(func,array,init=none):

# if init is none:

# res=array.pop(0)

# else:

# res=init

# for num in array:

# res=func(res,num)

# return res

# print(reduce_test(lambda x,y:x*y,num_l,100))

#reduce函式

num_l=[1,2,3,100]

print(reduce(lambda x,y:x+y,num_l,1))

print(reduce(lambda x,y:x+y,num_l,))

總結:

#總結:

# map函式:處理序列中的每個元素,得到的結果是乙個『列表』,該『列表』元素個數和位置與原來一樣

#filter函式:遍歷序列中的每個元素,判斷每個元素得到布林值,如果是true則留下來得到的結果是乙個『列表』

# people=[,

# ,

# ,

# ,]

# print(list(filter(lambda p:p['age']<=18,people)))

#reduce函式:處理 乙個序列,把序列進行合併操作

# num_l=[1,2,3,100]

# print(reduce(lambda x,y:x+y,num_l,1))

# print(reduce(lambda x,y:x+y,num_l,))

內建函式:

# print(abs(-1))

# print(all([1,2,'1']))#做布林運算(所有的都是true才返回true)

# name='你好'

# print(bytes(name,encoding='utf-8')) #編碼,三個位元組

# print(bytes(name,encoding='utf-8').decode('utf-8'))# 解碼

# print(bytes(name,encoding='gbk'))#兩個位元組

# print(bytes(name,encoding='gbk').decode('gbk'))

# #print(bytes(name,encoding='ascii'))#ascii 不能編碼中文

# print(chr(100))

# print(dir(all))

# print(divmod(10,3))

# dic=

# dic_str=str(dic)

# print(dic_str)

# print(eval(dic_str))eval()函式:以python的方式解析並執行字串,並將返回的結果輸出# d1=eval(dic_str)#把字串中的資料結構給提取出來# print(d1['name'])

# a='1+2*(3/3-1)-2'#把字串中的表示式進行運算# print(eval(a))

#可hash的資料型別即不可變資料型別,不可hash的資料型別即可變資料型別

# print(hash('dhfsaklefownfs2134254'))

# print(hash('-03thjsdnfkgqopw3utjlsdfml;'))

# name='alex'

# print(hash(name))

# print(hash(name))

# print(hash(name))

# print(help(dir))

# print(bin(10)) #10進製轉換成2進製

# print(hex(12)) #16

# print(oct(12)) #8

# print(isinstance(1,int))

# print(isinstance('abc',int))

# print(isinstance('abc',str))

name='哈哈哈哈'

print(globals())

print(__file__)

print(locals())

python學習day16 內建函式二

資料型別 int bool float等等 資料結構 dict tuple list set str 內建函式 l 1,2,3,4,5 l.reverse print l l 1,2,3,4,5 l2 reversed l 保留原列表,返回乙個反向的迭代器 print l2 l 1,2,3,4,5,...

day16 高階函式

匿名函式 高階函式 滿足倆個特性任意乙個即為高階函式 1.函式的傳入引數是乙個函式名 2.函式的返回值是乙個函式名 map num l 1,2,10,5,3,7 lambda x x 1 def add one x return x 1 lambda x x 1 def reduce one x r...

day16 匿名函式

匿名函式 函式名 lambda 引數1,引數2,返回值 注意 匿名函式不允許換行 匿名函式返回值和正常函式一樣可以是任意資料型別 def add x,y return x y add lambda x,y x y print add 3,6 dic def func num return dic n...