学校官方网站网页设计,聊城seo,关于做情侣的网站的图片,寻找在山西运城专业做网站推广的什么是内置高阶函数#xff1a; 一个函数可以作为参数传给另外一个函数#xff0c;或者一个函数的返回值为另外一个函数#xff08;若返回值为该函数本身#xff0c;则为递归#xff09;#xff0c;满足其一则为高阶函数。 Python中内置了几个常用的高阶函数#xff0c;…什么是内置高阶函数 一个函数可以作为参数传给另外一个函数或者一个函数的返回值为另外一个函数若返回值为该函数本身则为递归满足其一则为高阶函数。 Python中内置了几个常用的高阶函数比如map( )函数、reduce( )函数、filter( )函数和sorted( )函数。 abs函数 abs() 函数返回数字的绝对值。 a -1print(abs(a))
1print(abs(-15))
15f absprint(f(-10))
10函数本身也可以赋值给变量变量可以指向函数
def double(x):return 2*x # 定义一个函数
f double # 将函数赋值给变量
print(f(2)) # 通过变量可以调用函数map函数 map()函数接收的是两个参数一个函数一个序列(列表)其功能是将传入的函数依次作用到序列的每个元素并且把结果作为新的序列返回。 1 . 对于一个序列[-1,3,-4,-5]的每一个元素求绝对值
li1 [-1,3,-4,-5]
li2 map(abs,li1) # 将abs 函数依次作用于序列了li1中的每一个元素并将处理后的结果返回序列
print(list(li2))运行结果
[1,3,4,5]2 . 对于每个元素求阶乘
import random
def factoria(x):res 1for i in range(1,x1):res res * ireturn res
li [random.randint(2,7) for i in range(10)]
print(list(map(factoria,li)))
reduce函数 reduce()把一个函数作用在一个序列上这个函数必须接收两个参数 reduce把结果继续和序列的下一个元素做累积计算 reduce(f,[x1,x2,x3,x4]) f(f(f(x1,x2),x3),x4)
python2中reduce是内置函数 python3中 from functools import reduce
from functools import reduce
#import functools
#functools.reduce()
def multi(x,y):return x*y
print(reduce(multi,range(1,5)))def add(x,y):return xy
print(reduce(add,range(1,6)))运行结果
24
15filter函数
filter过滤函数 和map()类似的也接收一个函数和一个序列 但是和map()不同的是filter()把传入的函数依次作用于 每个元素然后根据返回值是True或者False决定保留还是丢弃该元素
def isodd(num):if num % 2 0:return Trueelse:return Falseprint(list(filter(isodd,range(100))))运行结果
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30,
32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60,
62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90,
92, 94, 96, 98]lambda匿名函数 lambda()匿名函数是指一类无需定义标识符函数名的函数或子程序。 lambda 函数可以接收任意多个参数 (包括可选参数) 并且返回单个表达式的值。 匿名函数的关键字为 lambda。 冒号前面是形参冒号后面是返回值。
示例分别打印元素的累加、平方、范围内的所有偶数
from functools import reduce
# def add(x,y):
# return xy
# print(reduce(add,range(10)))
print(reduce(lambda x,y:xy,range(10)))
# def mypow(x):
# return x**2
print(list(map(lambda x:x**2,range(5))))
# def isood(num):
# return num%2 0
print(list(filter(lambda x:x%20,range(100))))运行结果
45
[0, 1, 4, 9, 16]
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30,
32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60,
62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90,
92, 94, 96, 98]sorted( )函数 sorted( )函数是用来对可迭代对象排序的与列表的list( )函数不同后者是在原位置上进行排序的排序后原列表的元素顺序会发生改变而前者是将排序后的结构生成到一个新的列表中。
a [1,3,8,4,9,2,6]
a.sort()
print(a)
b [9,3,6,8,2,7,4]
c sorted(b)
print(b)
print(c)运行结果
[1, 2, 3, 4, 6, 8, 9] a的原列表元素顺序发生改变
[9, 3, 6, 8, 2, 7, 4] b 列表顺序没有改变
[2, 3, 4, 6, 7, 8, 9] 新生成的列表中存放排序之后的元素练习 1 . 将一个字符串转换成整型 ‘332.31321’
from functools import reducedef str2int(s):def char2int(ch):c {str(x): x for x in range(10)}return c[ch]def fun(n1, n2):return n1 * 10 n2return reduce(fun, map(char2int, s))num str2int(12345)
print(type(num), num)运行结果
class int 123452.利用map()函数把用户输入的不规范的英文名字变为首字母大写其他小写的规范名字
def zz(x):return x.capitalize()
name input(请输入英文名字)
print(list(map(zz, name.split())))运行结果
请输入英文名字faker
[Faker]
3.利用map和reduce编写一个str2float函数把字符串’123.456’转换成浮点数123.456
from functools import reduce
def str2float(s):s1 s.split(.)[0]s2 s.split(.)[1][::-1]c2n {str(i):i for i in range(1,10)}def number(x):return c2n[x]def before_c2n(x,y):return x*10ydef after_c2n(x,y):return x*0.1yreturn reduce(before_c2n,map(number,s1)) 0.1*reduce(after_c2n,(map(number,s2)))
print(str2float(345.678))运行结果
345.6784.回数是指从左向右读和从右向左读都是一样的数例如12321909。请利用filter()筛选出回数
def huishu(s):s str(s)return s s[::-1]
li [123,23432,121,4567,12421]
print(list(filter(huishu,li)))运行结果
[23432, 121, 12421]