什么叫高阶函数?
把函数作为参数传入,这样的函数称为高阶函数,函数式编程就是指这种高度抽象
的编程范式。
map函数
我们具体用两个小案例来说明map
- 接收用户输入3个字符串数字 ; 依次将接收的三个数转换为整形
- 对于序列每个元素求绝对值;
nums = input("请输入:").split()
int_nums=list(map(int,nums)) #将字符串通过map函数转换成int型
print(int_nums)
abs_nums=list(map(abs,int_nums))#将int类型中的负数通过map函数求绝对值
print(abs_nums)
reduce() 函数会对参数序列中元素进行累积。
第一个参数接受一个函数名,后面的参数接受一个或多个可迭代的序列,返回的是一个结果。
利用reduce函数求阶乘
result = reduce(lambda x, y:x*y, range(1, 5))
print(result)
filter()函数
filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。
第一个参数接受一个函数名,后面的参数接受一个或多个可迭代的序列,返回的是一个序列。
同样通过案例来理解函数:
- 获取100以内能被3或者5整除的所有数;
- 获取2000-2999年,所有的闰年;
- 获取1000内容所有的素数;
# 1.
nums = filter(lambda num: num % 3 == 0 or num % 5 == 0, range(100))
print(list(nums))
# 2.
years= filter(lambda year: (year % 4 == 0 and year % 100 !=0) or year % 400 == 0, range(2000, 3000))
print(list(years))
# 3.
def is_prime(num):
"""判断是否为素数"""
if num < 2:
return False
for i in range(2, num):
if num %i == 0:
break
else:
return True
prime_num = filter(is_prime, range(1001))
print(list(prime_num))
还有就是我们之前用过的sort()和sorted()
sort()和sorted()的具体区别是什么呢?
- 排序对象不同: sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。
- 返回值不同:
list 的 sort 方法返回的是对已经存在的列表进行操作,无返回值,
内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。