小工具      在线工具  汉语词典  dos游戏  css  js  c++  java

python高级函数

Python,python,list 额外说明

收录于:18天前

高阶函数

函数作为参数

# 对于函数function,需要用()才是函数调用,单个函数名为函数本身

# 函数没有像Java的反射的概念,function为函数本身,function(参数)为函数调用
def func(x,a):
    return x(a)
func(abs,-12)
12
# 能够获取函数本身后就可以将函数作为变量进行传递

def add(*args):
    return sum(args)

def math(function,*args):
    return function(*args)
math(add,1,2,3)
6

地图()函数

# Python内建了map()和reduce()函数

# map()函数接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回。

def add(a):
    return a**2

map_add=map(add,[1,2,3,4])
for i in map_add:
    print(i)
1
4
9
16

减少()函数

# reduce()函数把一个函数作用在一个序列上

def add1(x,y):
    return x+y
reduce_add=reduce(add,[1,2,3,4])
print(reduce_add)
---------------------------------------------------------------------------

NameError                                 Traceback (most recent call last)

~\AppData\Local\Temp/ipykernel_12684/1983324346.py in <module>
      3 def add1(x,y):
      4     return x+y
----> 5 reduce_add=reduce(add1,[1,2,3,4])
      6 print(reduce_add)


NameError: name 'reduce' is not defined
from functools import reduce
def add1(x,y):
    return x+y
reduce_add=reduce(add1,[1,2,3,4])
print(reduce_add)
10

过滤器()函数

# filter()也接收一个函数和一个序列。和map()不同的是,filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素。

def select(a):
    return a%2==0
list_one=[1,2,3,4,5,6,7,8,9,10]
list_two=filter(select,list_one)
for i in list_two:
    print(i,end=" ")
2 4 6 8 10 

排序()函数

# sorted()函数也是一个高阶函数,它还可以接收一个key函数来实现自定义的排序.

list_three=sorted([9,8,7,6,5])
for i in list_three:
    print(i,end=" ")
5 6 7 8 9 

函数作为返回值

# 高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回。
def add(*args):
    print(sum(args))
    
def delete(x,y):
    print(x-y)

def math(function_name):
    if function_name==add:
        return add
    elif function_name==delete:
        return delete
    else:
        return "None Function Nmae"

math(add)(1,2,3)
6

匿名函数 lambda

# 传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方便。

# 匿名函数lambda x: x * x,y实际上就是: 关键字lambda表示匿名函数,冒号前面的x表示函数参数,后面为逻辑,y为实参

# 匿名只能是一个表达式,返回值就是该表达式的结果。也可以作复制给变量

x=lambda x,y:x+y
print(x)

y=lambda x: sum(x) ,[1,2,3]
print(y)

print(lambda x:x**2,[2,4,8])
<function <lambda> at 0x0000020362785F70>
(<function <lambda> at 0x00000203626AD820>, [1, 2, 3])
<function <lambda> at 0x0000020362785550> [2, 4, 8]

装饰者

# 代码运行期间动态增加功能的方式,称之为“装饰器”(Decorator)
@log
def now():
    print('2015-3-25')

    
# @log就是一个装饰器
. . .

相关推荐

额外说明

Docker安装MinIO教程

本章教程,主要介绍一下,如何在Linux用Docker安装MinIO。         MinIO是一个高性能、分布式对象存储系统,支持S3 API,适用于云原生环境。MinIO可以在标准硬件上运行,并且具有低延迟、高吞吐量、高可用性和可扩展性等优势。M

额外说明

day07---(02)添加课程分类(前端)

1、 在router/index.vue中添加课程分类管理路由 { path: '/subject', component: Layout, redirect: '/subject/table', name: '课程

额外说明

刚学习编写代码时的愚蠢瞬间:初学者的代码经验分享

刚学习编写代码时的愚蠢瞬间:初学者的代码经验分享 刚学习编写代码时的愚蠢瞬间:初学者的代码经验分享 摘要 引言 糟糕的变量命名 -‍♂️ 问题 - 解决方案 异常处理的忽略 - 问题 - 解决方案 魔法数值的滥用 -‍♂️ 问题 - 解决方案 忘记注释

额外说明

企业级实战——品优购电商系统开发-07数据库表结构与框架组合

QQ 1274510382 Wechat JNZ_aming 商业联盟 QQ群538250800 技术搞事 QQ群599020441 解决方案 QQ群152889761 加入我们 QQ群649347320 共享学习 QQ群674240731 纪年科技am

额外说明

手机端企业微信分享链接的图标修改存在缓存问题

情景:之前的项目因为行名图标有变动,设计到分享链接的图标要跟着变动,但是跟换了服务器的图片后分享的链接图标一直没有变化,这是因为缓存的原因,企微自己的缓存bug导致的,我这里的处理是将服务器里的图片名字进行一个修改,前端这边也修改一下图片路径中的图片名,

额外说明

云原生微服务治理经典套件之Spring Cloud Alibaba核心技术与实战案例

系列文章目录 送书第一期 《用户画像:平台构建与业务实践》 送书活动之抽奖工具的打造 《获取博客评论用户抽取幸运中奖者》 送书第二期 《Spring Cloud Alibaba核心技术与实战案例》 文章目录 系列文章目录 1、云原生如何做微服务治理? 2

额外说明

政务钉钉扫码登录(前端)

前提 使用 iframe 嵌入专有钉钉二维码页面,本篇仅说前端; 需要申请 client_id 应用标识,但这里不赘述。详见此处; 回调地址 redirect_uri,与服务器相关人员确认,但这里不赘述; 扫码登录官方说明 开始 代码实现使用 Vue2.

额外说明

IDEA设置Class创建自动添加头部注释,为已存在的类或者方法快捷添加注释

IDEA快捷注释定义 设置IDEA创建Class时自动添加头部注释 已存在的类或者方法快捷添加注释 常用的预设变量 Postfix Completion(代码模板) 设置IDEA创建Class时自动添加头部注释 打开 File->setting->Edi

额外说明

【LeetCode】《不同路径》的解题思考过程

一、题目描述 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。 问总共有多少条不同的路径? 二、解决办法 从

ads via 小工具