python高阶函数

lamaba函数
定义:只能包含一条表达式且直接返回表达式的值
作用:省去函数的命名,可以随时创建和销毁,有利于减少程序的耦合度

fx = lambda n: (n**2+1)%5==0
fx = lambda n: True if (n**2+1)%5==0 else False
lambda x,y: x if x>y else y

eval 函数
作用:把一个字符串当表达式来执行,返回表达式执行后的结果
格式:eval(source, global=None, local=None)

s = '1+2*3'
v = eval(s)# v = 7
print(v)# 7
#================================
x = 100
y = 200
s = "x+y"
v = eval(s) # 300
#=================================
eval('lambda: print("hello")')

exec 函数
作用:把一个字符串当程序来执行,返回表达式执行后的结果
格式:exec(source, global=None, local=None)

s = "x=100\ny=200\nprint(x+y)"
exec(s)# 300

map函数 filter函数

L1 = list(filter(lambda n:n%2==1,range(1,20)))
print(L1)# [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
 L2 = list(map(lambda n:n%2==1,range(1,20)))
print(L2) #[True, False, True, False, True, False, True, False, True, False, True, False, True, False, True, False, True, False, True]
# 这里如果用filter的话,说明匿名函数lambda给出的是个筛选条件,从
# 1到19中筛选出奇数来,但这里如果用map的话,就好像变成了它判断
# 对错的条件,只打印true和false。

# 而map一般的用法如下,参数有一个函数一个序列,将右边的序列经
# 过左边的函数变换,生成新的序列。
#==================================#
 L1 = list(map(lambda n:n*n,range(1,20)))
# [1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289, 324, 361]

enumerate函数
语法格式:enumerate(iterable, start=0)

l = enumerate("ABC", 100)
print(l) # <enumerate object at 0x7fa155288318>
for i in l:
    print(i)
# 结果如下:
# (100, 'A')
# (101, 'B')
# (102, 'C')
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 文:郑元春 人生苦短,我用Python! 0x00:函数式编程 describe what to do, rath...
    北静王阅读 4,804评论 1 15
  • 1. abs(x) abs()函数返回数字(可为普通型、长整型或浮点型)的绝对值。如果给出复数,返回值就是该复数的...
    TENG书阅读 3,101评论 0 0
  • 1. abs(x) abs()函数返回数字(可为普通型、长整型或浮点型)的绝对值。如果给出复数,返回值就是该复数的...
    chen_000阅读 3,038评论 0 0
  • 2.3.1 高阶函数定义 高阶函数就是把函数当做参数传递的函数示例如下 如上, 调用add函数时, 分别执行了ab...
    大红中阅读 3,097评论 0 0
  • “夜上海,夜上海,你是个不夜城,华灯起,歌声响,歌舞升平” “农历大年二十八,上海各大车站迎来春运客运高峰……” ...
    我是阿桑阅读 1,846评论 0 1