python基础知识--map、reduce、filter、sorted、lambda、偏函数

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函数中了

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值