函数
函数式编程
1、lambda 匿名函数 行内函数
f=lambda x,y,z:x+y+z #相当于一个函数f(x,y,z)=x+y+z f=(1,2,3)
2、reduce(func(),Z) 用函数func对集合Z中的1、2个数进行运算,将得到的结果再与Z中的第三个数进行运算
from functools import reduce#python3 中必须加在,要使用reduce就必须先导入它 def add (x,y): return x+y sum=reduce(add,(1,2,3,4,5,6,7))#1+2+。。。+7 print(sum)
3、filter()用于过滤序列,fliter()用于接受一个函数和一个序列,并把传入的函数依次作用于每一个元素, 然后根据返回值True或者False决定保留还是丢弃元素。
#删掉偶数,保留奇数 def is_odd(n): return n%2 ==1 b=list(filter (is_odd,[1,2,3,56,6,7,90])) print(b) #删除空字符串 def not_empty(s): return s and s.strip() b=list (filter(not_empty,['a','',None,'c',''])) print(b) #实现函数功能 b=filter(lambda x:x<8 and x>5,range(1,10)) print(list(b))#filter是一个容器,返回时需要用list调用才能显示数据
4、map(func,S)将传入的函数func依次作用到序列s的每个元素,并把结果作为新的序列返回 函数func在S域上遍历,map()是一个容器,调用的时候需要引入list才
能显示数据
#比较map和filter b=list(map(lambda x:x**2,[1,2,3])) print(b) b=list(filter(lambda x:x**2,[1,2,3])) print(b) #map返回的是func作用后的结果数据而filter是通过func作用筛选出作用域的数据 #map可以接受多个参数的函数 b=list(map(lambda x,y:x*y+x,[1,2,3],[4,5,6])) print(b)
5、行函数 (列表解析,列表推导)
list=[1,3,4,5,6] A=[k+2 for k in list if k%2==0] print(A) A=[k+2 for k in [1,2,4,6,] if k%2==0] print(A)
6、常用内置函数 sum zip enumerate max min
s=sum([1,2,3])#sum的参数是一个list print(s) a=range(1,10) b=range(1,11) c=sum([item for item in a if item in b ]) print(c) #sum的参数可以是字典、元组、集合,但是计算对象都应该是数值型 a={1,2,3} print(sum(a)) a=(1,2,3) print(sum(a)) a={1:2,2:3,3:4} print(sum(a))#默认输出的是key的值 print(sum(a.values())) t='abc' s=[1,2,3] s=zip(t,s) print(list(s))#zip(t,s)返回t和s一个相互匹配的列表 s=zip('12345','abcd')#若长度不够,以最短的为主 print(list(s)) x=[1,2,3] y=[4,5,6] z=[7,8,9] xyz=zip(x,y,z ) u=zip(*xyz) print(list(u)) #dict可以和zip联合使用生成一个字典 s=dict(zip('abc',range(1,4))) print(s) #enumerate(t)返回t的index和元素对,t可以是字符串,元组,列表,字典,如果是字典,则返回键名 t={1:2,3:4,5:6} for i,k in enumerate(t): print(i,k) #max min 的参数可以是列表、元组、集合、字典 还可以是range() a={1:2,3:4,5:6}#字典默认的是key 如果要对value进行计算 用 .values() print(max(a)) print(min(a.values()) eval()把字符串当成有效的表达式求值 x =1 s=eval('x+1') print(s) #创建一个dir.txt的文件在python3.7中 删除这个文件 __import__('os').system('dir>dir.txt') open('dir.txt').read() import os os.system('del dir.txt/q')