1、map函数语法:
map(function, iterable, ...) :将iterable中的每个参数作用于function
- function -- 函数
- iterable -- 一个或多个序列
例子:
def square(x):
return x**2
print(map(square,[1,2,3,4,5])) #输出<map object at 0x0000019A53513400>
rs=map(square,[1,2,3,4,5])
print(list(rs)) #输出[1,2,3,4,5]取平方后的[1, 4, 9, 16, 25]
def f(x):
return x*x
r=map(f,[1,2,3,4,5,6,7,8,9])
print(list(r)) #[1, 4, 9, 16, 25, 36, 49, 64, 81]
print(list(map(str,[1,2,3,4,5,6,7,8,9]))) #一行代码int类型转换成String
因为python3中map返回的是一个迭代器,所以需要我们用list转化一下
2、reduce函数:
reduce把一个函数作用在一个序列【x1,x2,x3,......】上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算:
def add(x,y):
return x+y
print(reduce(add,[1,2,3,4,5])) #15
def fn(x,y):
return x*10+y
print(reduce(fn,[1,3,5,7])) #1357
reduce(fn,[1,3,5,7])=((1*10+3)*10+5)*10+7 # reduce把结果继续和序列的下一个元素做累积计算
print(s) #1357
3、filter
filter(function,iterable) :filter()
把传入的函数依次作用于每个元素,然后根据返回值是True
还是False
决定保留还是丢弃该元素,filter()
函数返回的是一个Iterator
,所以要借助于list把结果输出
#在一个list中,删掉偶数,只保留奇数
def is_odd(n):
return n%2==1
L=list(filter(is_odd,[1,2,3,45,6,7,8]))
print(L) #[1, 3, 45, 7]
#把list中的空格过滤掉
def not_empty(s):
return s and s.strip()
S=list(filter(not_empty,['A','',None,'C',' ']))
print(S) #['A', 'C']
4、sorted()函数:
1)函数就可以对list进行排序
2)sorted()
函数也是一个高阶函数,它还可以接收一个key
函数来实现自定义的排序
S1=sorted([36,5,-12,9,-21])
print(S1) #[-21, -12, 5, 9, 36]
#按绝对值大小排序
S2=sorted([36,5,-12,9,-21],key=abs)
print(S2) #[5, 9, -12, -21, 36]
#对字符串排序,是按照ASCII的大小比较的,由于'Z' < 'a',结果,大写字母Z会排在小写字母a的前面
L1=sorted(['bob','about','Zoo','Credit'])
print(L1) #['Credit', 'Zoo', 'about', 'bob']
#忽略大小写的排序
L2=sorted(['bob','about','Zoo','Credit'],key=str.lower)
print(L2) #['about', 'bob', 'Credit', 'Zoo']
#要进行反向排序
L3=sorted(['bob','about','Zoo','Credit'],key=str.lower,reverse=True)
print(L3) #['Zoo', 'Credit', 'bob', 'about']
5、lambda函数:是一种匿名函数
lambda 参数列表:lamda体
lamda体只有一条语句,且不需要return语句
例子:
s=lambda x:x**3
s1=lambda x,y,z:2*x+x*y-z
print(s(3)) # 27,计算3的3次方
print(s1(3,2,1)) #11,计算2*3+3*2-1
枚举类:
class 枚举类名(enum.Enum):
枚举常量列表
import enum
@enum.unique #校验重复值
class WeekDays(enum.IntEnum): #IntEnum限制只能输入Int类型
MONDAY=2
TUESDAY=3
WEDNESDAY=4
THURSDAY=5
FRIDAY=6
SUNDAY=7
day=WeekDays.FRIDAY #创建枚举类实例
print(day)
print(day.value)
print(day.name)
if day==WeekDays.FRIDAY:
print("true")
运行结果:
WeekDays.FRIDAY
6
FRIDAY
true
6、偏函数:
当函数的参数个数太多,需要简化时,使用functools.partial
可以创建一个新的函数,这个新函数可以固定住原函数的部分参数,从而在调用时更简单。
max2=functools.partial(max,10)
实际上会把10
作为*args
的一部分自动加到左边,也就是:
print(max2(5,6,7)) #结果是10,偏函数已经把10加入到max2函数中了