Python教程

【九月打卡】第8天 Python的函数式编程(上)

本文主要是介绍【九月打卡】第8天 Python的函数式编程(上),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

课程名称:Python3 进阶教程(新版)
章节名称:第8章 Python的函数式编程
讲师名称:咚咚呛

课程内容

  • 函数式编程
  • 把函数作为参数
  • map()函数
  • reduce()函数
  • filter()函数
  • sorted()函数

学习收获

函数式编程

函数是逻辑功能的单位,函数式是一种编程范式。函数不等于函数式,计算不等于计算机。

函数式编程的特点:

  • 把计算视为函数而不是指令
  • 代码简洁,容易阅读,容易理解
  • 纯函数式编程:不需要变量,测试简单

python的函数式编程的特点:

  • 不是纯韩式是编程:允许有变量
  • 支持高阶函数:函数可以作为变量
  • 支持闭包:可以返回函数
  • 支持匿名函数

把函数作为参数

import math

def add(x,y,f):
    return f(x)+f(y)
    
print(add(4,25,math.sqrt))

map 函数

map()是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把函数 f依次作用在list的每个元素上,map()函数会返回一个迭代器,可以依次迭代得到原来list的元素被函数f处理后的结果。

names = ['alice', 'BOB', 'CanDY']

def firstToUpper(name):
    return name[0].upper() + name[1:].lower();
    
l = map(firstToUpper,names)
print(l)

reduce 函数

和map函数一样,reduce()函数也是Python内置的一个高阶函数。reduce()函数接收的参数和 map() 类似,一个函数 f,一个list,但行为和 map()不同,reduce()传入的函数 f 必须接收两个参数,reduce()对list的每个元素反复调用函数f,并返回最终结果值。educe()还可以接收第3个可选参数,作为计算的初始值。
在python2中,reduce()函数和map()函数一样,可以直接使用,但是在python3中,reduce()函数被收录到functools包内,需要引入functools才可以使用。

def mul(x,y):
    return x * y

print(reduce(mul,[1,2,3]) # ==> 6

print(reduce(mul,[1,2,3],4)) # ==> 24

filter 函数

filter()函数接收一个函数 f 和一个list,这个函数 f 的作用是对每个元素进行判断,返回 True或 False,filter()根据判断结果自动过滤掉不符合条件的元素,并返回一个迭代器,可以迭代出所有符合条件的元素。

import math

def filter_num(num):
    return int(math.sqrt(num)) * int(math.sqrt(num)) == num

l = range(1,101);

print(filter(filter_num,l))

sorted 函数

sorted()函数可对list进行排序,当list的每一个元素又是一个容器时,则会以第一个元素来排序。

sorted接受key参数,用来指定排序的字段,key的值是一个函数,接受待排序列表的元素作为参数,并返回对应需要排序的字段。

如果需要倒序,指定reverse参数即可。

sorted(score, key=k, reverse=True)

举个例子:

# 实现忽略大小写排序的算法

def sort_by_key(item):
    return item[0].lower()
    
l = ['bob', 'about', 'Zoo', 'Credit']

print(sorted(l,key=sort_by_key))

打卡截图

这篇关于【九月打卡】第8天 Python的函数式编程(上)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!