python 笔记

本文深入探讨Python中的高阶函数如map(), reduce(), filter()和sorted()的应用及原理,通过实例展示了如何利用这些函数简化代码并提高效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

map 接收函数f和list,并把函数f依次作用到list上
例如:

    def format_name(s):
        return s[:1].upper()+s[1:].lower()
        print(map(format_name,['ade','Msas','varU'])) 将字符串首字母大写

reduce()函数也是Python内置的一个高阶函数。reduce()函数接收的参数和 map()类似,一个函数 f,一个list,但行为和 map()不同,reduce()传入的函数 f 必须接收两个参数,reduce()对list的每个元素反复调用函数f,并返回最终结果值。 需要导入

from functools import reduce 
    def prod(x, y):
        return x * y
    print(reduce(prod,[2,4,5,3,4])) 求所有数的积

filter()函数是 Python 内置的另一个有用的高阶函数,filter()函数接收一个函数 f 和一个list,这个函数 f 的作用是对每个元素进行判断,返回 True或 False,filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新list。

    def is_sqrt(x):
        return math.sqrt(x)%1==0
    print(list(filter(is_sqrt,range(1,101)))) 返回1100范围内平方数

sorted()函数可对list进行排序:但 sorted()也是一个高阶函数,它可以接收一个比较函数来实现自定义排序,比较函数的定义是,传入两个待比较的元素 x, y,如果 x 应该排在 y 的前面,返回 -1,如果 x 应该排在 y 的后面,返回 1。如果 x 和 y 相等,返回 0。

    def cmp_ignore_case(s):
        return s.lower()
    print(sorted(['sa','Ed','lK'],cmp_ignore_case)) 忽略大小写排序

python中返回函数 定义一个函数f,其内部再定义一个函数g,可通过x=f(),x()调用函数g。

    from functools import reduce 
def calc_prod(lst):
    def prod(x, y):
        return x * y
    def ca():
        return reduce(prod,lst)
    return ca

python闭包 闭包的特点是返回的函数还引用了外层函数的局部变量,所以,要正确使用闭包,就要确保引用的局部变量在函数返回后不能变。举例如下:

def count():
    fs = []
    for i in range(1,4):
        def f(a=i):
            return a*a
        fs.append(f)
    return fs
f1,f2,f3=count()
f1()=1,f2()=4,f3=9;若a=i去掉,a*a换成i*i则结果都为9
import functools
class Person(object):
    pass
p1 = Person()
p1.name = "a"
p2 = Person()
p2.name = "B"       #忽略大小写排序
p3 =Person()
p3.name = "c"
L1 = [p1, p2, p3]
L2 = sorted(L1,key=lambda p1:p1.name.lower())

class Perso(object):
    count = 0                 #统计调用次数

    def __init__(self,name,gender,**kw):
        Perso.count = Perso.count + 1
        self.name = name
        self.__ender = gender
        for k, v in kw.items():
            setattr(self, k, v)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值