Python个人学习笔记(14):函数(匿名函数、内置函数(下)、三元表达式)

九、匿名函数

lambda表达式
语法规则:
变量 = lambda 参数1,参数2,…:返回值
例:用lambda简化下述操作

def func(a,b):return a+b
ret = func(1, 2)
print(ret)

代码:

fn = lambda a,b:a+b
print(fn)
print(fn(12,13))

结果:

<function <lambda> at 0x000001E751EAAF20>
25

可以帮我们一句话创建函数
可以与某些内置函数一起用

十、内置函数(下)

(一)zip:可以把多个可迭代内容进行合并

zip自动实现如下操作:
代码:

lst1 = ["赵本山","范伟","苏有朋"]
lst2 = [40,38,42]
lst3 = ["卖拐","耳朵大有福","情深深雨濛濛"]result = []
for i in range(len(lst1)):first = lst1[i]second = lst2[i]third = lst3[i]result.append((first,second,third))
print(result)

结果:

[('赵本山', 40, '卖拐'), ('范伟', 38, '耳朵大有福'), ('苏有朋', 42, '情深深雨濛濛')]

代码:

result = zip(lst1, lst2, lst3)
print(result)
print(dir(result)) # 查询功能lst = list(result)
print(lst)

结果:

<zip object at 0x000001E1A9C563C0>
['__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__lt__', '__ne__', '__new__', '__next__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setstate__', '__sizeof__', '__str__', '__subclasshook__'] # 包含迭代器功能

既然是迭代器,那么就可以用for循环拿到元素
代码:

for item in result:print(item)

结果:

('赵本山', 40, '卖拐')
('范伟', 38, '耳朵大有福')
('苏有朋', 42, '情深深雨濛濛')

还可以放到一个列表中
代码:

lst = list(result)
print(lst)

结果:

[('赵本山', 40, '卖拐'), ('范伟', 38, '耳朵大有福'), ('苏有朋', 42, '情深深雨濛濛')]

(二)locals、globals(了解)

locals:查看当前位置所有的局部变量
如果locals写在了全局作用域范围内,此时看到的就是全局作用域中的内容。
代码:

lst1 = ["赵本山","范伟","苏有朋"]
lst2 = [40,38,42]
lst3 = ["卖拐","耳朵大有福","情深深雨濛濛"]
a = 188
print(locals())

结果:

'__cached__': None, 'lstat': <built-in function lstat>, 'lst1': ['赵本山', '范伟', '苏有朋'], 'lst2': [40, 38, 42], 'lst3': ['卖拐', '耳朵大有福', '情深深雨濛濛'], 'a': 188}

如果locals放在局部作用域范围,看到的就是局部作用域的内容
代码:

def func():a=336print(locals())func()

结果:

{'a': 336}

globals:不管写在哪,看到的都是全局作用域中的变量

(三)sorted:排序

1. 语法规则:

sorted(可迭代的, key=排序函数,reverse=True/False是否翻转,否则为从小到大)

代码:

lst = [16,22,34,68,1,213,324,49]
s = sorted(lst) # 从小到大
print(s)
s1 = sorted(lst,reverse=True) # 翻转,从大到小
print(s1)

结果:

[1, 16, 22, 34, 49, 68, 213, 324]
[324, 213, 68, 49, 34, 22, 16, 1]

2. 对字符串排序

sorted把列表中的每一项传递给排序函数,然后排序函数返回相应的值,最后根据返回值进行排序
要求:以字符串长短排序
代码:

lst = ["秋","张二嘎","比克","卡卡罗特","超级宇宙无敌大帅B"]def func(item): # item对应列表中的每一项数据return len(item)s = sorted(lst,key=func) # func后不要加(),否则变成调用函数了
print(s)

结果:

['秋', '比克', '张二嘎', '卡卡罗特', '超级宇宙无敌大帅B']

函数改成lanbda形式

lst = ["秋","张二嘎","比克","卡卡罗特","超级宇宙无敌大帅B"]
func = lambda x: len(x)
s = sorted(lst,key=func)
print(s)

由于排序函数在后文几乎不会用到,所以可以进一步简化

lst = ["秋","张二嘎","比克","卡卡罗特","超级宇宙无敌大帅B"]
s = sorted(lst,key=lambda x: len(x))
print(s)

一般情况下,lambda配合sorted使用

3. 对列表排序

lst = [{"id": 1, "name": "周润发", "age": 18, "salary": 56000},{"id": 2, "name": "周星驰", "age": 28, "salary": 51100},{"id": 3, "name": "周海媚", "age": 78, "salary": 56123},{"id": 4, "name": "周伯通", "age": 12, "salary": 513414},{"id": 5, "name": "周大兴", "age": 35, "salary": 563123},{"id": 6, "name": "周有辣", "age": 47, "salary": 561240},{"id": 7, "name": "周扒皮", "age": 8, "salary": 2310},
]

要求1:根据每个人的年龄排序
代码:

s = sorted(lst, key=lambda d: d["age"])
print(s)

结果:

[{'id': 7, 'name': '周扒皮', 'age': 8, 'salary': 2310}, {'id': 4, 'name': '周伯通', 'age': 12, 'salary': 513414}, {'id': 1, 'name': '周润发', 'age': 18, 'salary': 56000}, {'id': 2, 'name': '周星驰', 'age': 28, 'salary': 51100}, {'id': 5, 'name': '周大兴', 'age': 35, 'salary': 563123}, {'id': 6, 'name': '周有辣', 'age': 47, 'salary': 561240}, {'id': 3, 'name': '周海媚', 'age': 78, 'salary': 56123}]

要求2. 根据工资从大到小排列
代码:

s = sorted(lst, key=lambda d: d["salary"], reverse=True)
print(s)

结果:

[{'id': 5, 'name': '周大兴', 'age': 35, 'salary': 563123}, {'id': 6, 'name': '周有辣', 'age': 47, 'salary': 561240}, {'id': 4, 'name': '周伯通', 'age': 12, 'salary': 513414}, {'id': 3, 'name': '周海媚', 'age': 78, 'salary': 56123}, {'id': 1, 'name': '周润发', 'age': 18, 'salary': 56000}, {'id': 2, 'name': '周星驰', 'age': 28, 'salary': 51100}, {'id': 7, 'name': '周扒皮', 'age': 8, 'salary': 2310}]

(四)filter:筛选

自动提取需要的内容
语法规则:
filter(函数,可迭代对象)
列表元素依次当做参数传递给函数,函数判定之后再决定是否保留
filter是个生成器

lst = ["张无忌","张三丰","张翠山","灭绝小师太","小狐仙"]

要求1:提取姓张的人
代码:

f = filter(lambda x: x.startswith("张"),lst)
print(list(f))

结果:

['张无忌', '张三丰', '张翠山']

要求2:不要姓张的人
代码:

f = filter(lambda x: not x.startswith("张"),lst)
print(list(f))

结果:

['灭绝小师太', '小狐仙']

(五)map:映射

map(函数,可迭代对象)
列表中的每一个元素,经过函数计算之后得到的值,作为最终结果保留
map是一个生成器

lst = [1,2,3,4,5,6,7,8,9]

要求:对每一项计算平方
代码:

r = map(lambda x: x * x, lst)
print(list(r))

结果:

[1, 4, 9, 16, 25, 36, 49, 64, 81]

也可以不用map实现

result = [item * item for item in lst]
print(result)

后续数据分析的内容中,有些时候是列表推导式解决不了的,只能用map

十一、三元表达式(了解)

各大语言都有三元表达式。
目的是把简单的if判断写成一行。
语法:
结果1 if 条件 else 结果2
过程:
判断条件是否为真,如果真,返回结果1,否则返回结果2
代码:

a = 10
b = 20
c = a if a > b else b
print(c)

作用等同于:

if a > b:print(a)
else:print(b)

结果:

20

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/72094.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

dns劫持是什么?常见的劫持类型有哪些?如何预防?

DNS劫持的定义 DNS劫持&#xff08;Domain Name System Hijacking&#xff09;是一种网络攻击手段&#xff0c;攻击者通过篡改域名解析的过程&#xff0c;将用户对某个域名的访问请求重定向到错误或恶意的IP地址。这种攻击可能导致用户访问到钓鱼网站、恶意广告页面&#xff0…

prompt大师高效提示词解析

Prompt大师李继刚高效提示词示例解析 一、「汉语新解」提示词 核心结构 采用Lisp语言框架嵌套中文语义&#xff0c;通过(defun 新汉语老师 ()...)定义角色风格&#xff08;融合奥斯卡王尔德、鲁迅的批判性语言&#xff09;&#xff0c;用(隐喻 (一针见血...))构建解释逻辑链。…

基于 Vue 的Deepseek流式加载对话Demo

目录 引言组件概述核心组件与功能实现1. 消息显示组件&#xff08;Message.vue&#xff09;2. 输入组件&#xff08;Input.vue&#xff09;3. 流式请求处理&#xff08;useDeepseek.ts&#xff09;4. 语音处理模块&#xff08;Voice.vue&#xff09; 总结Demo Github 地址 引言…

RK3588 编译 openssl

在编译 OpenSSL 时,你需要确保你的系统环境已经配置好了所有必要的依赖和编译工具。下面是一般步骤和一些常见问题的解决方案,特别是在使用 RK3588 这类的 ARM 处理器上。 1. 安装依赖 首先,你需要安装编译 OpenSSL 所需的依赖。这通常包括编译器(如 GCC)、make 工具、Per…

常见JVM命令

1. java -XX:PrintCommandLineFlags HelloGC 作用&#xff1a;打印 JVM 启动时的命令行参数&#xff0c;包括用户显式设置的参数和 JVM 自动默认设置的参数。用于确认 JVM 实际使用的配置。 2. java -Xmn10M -Xms40M -Xmx60M -XX:PrintCommandLineFlags -XX:PrintGC -XX:Prin…

easy-poi导出and导入一对多数据excel

easy-poi导出and导入一对多数据excel 一、导入jar包 <!-- easy-poi --><dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-spring-boot-starter</artifactId><version>4.4.0</version></dependency> 二…

c#如何直接获取json中的某个值

在 C# 中直接获取 JSON 中的某个值,通常可以通过以下方法实现(以 Newtonsoft.Json 和 .NET 内置的 System.Text.Json 为例): 方法 1:使用 System.Text.Json(.NET 内置库) using System.Text.Json;// 示例 JSON 字符串 string json = @"{""name"&qu…

WPS二次开发系列:Android 第三方应用如何获取WPS端内文档

1.需求场景 在项目开发中碰到这种情况&#xff0c;我们需要利用WPS的文档管理能力&#xff0c;比如需要调用WPS的文件选择器&#xff0c;来选择文档&#xff0c;同时需要得到WPS选择的文档结果返回给我们的应用。之前在网上找到了很久都没有找到WPS移动端有相关的API接口文档和…

Pytesseract识别图片

1. Pytesseract识别图片原理 1.1 Tesseract引擎工作原理 Tesseract OCR 引擎是一个功能强大的开源文字识别工具&#xff0c;其工作原理可以分为以下几个关键步骤&#xff1a; 图像预处理&#xff1a;Tesseract 首先对输入的图像进行预处理&#xff0c;包括灰度化、二值化、去…

Flutter 基础组件 Text 详解

目录 1. 引言 2. 基本使用 3. 自定义样式 4. 文本对齐与溢出控制 5. 外边距 5.1 使用 Container 包裹 5.2 使用 Padding 组件 5.3 在 Row/Column 中使用 5.4 动态边距调整 5.5 关键区别说明 5.6 设置 margin 无效 6. 结论 相关推荐 1. 引言 Text 组件是 Flutter 中…

Acknowledgment.nack方法重试消费kafka消息异常

文章目录 问题示例异常 原因nack方法Acknowledgment接口实现类&#xff1a;ConsumerAcknowledgment实现类&#xff1a;ConsumerBatchAcknowledgment 解决方案1 批量消费指定index示例 2 单条消费示例 问题 使用BatchAcknowledgingMessageListener 批量消费Kafka消息&#xff0…

Java 反序列化 - commons collection 之困(一)

#01多余的碎碎念 说到 java 反序列化&#xff0c;去搜索的话能看到网上有很多分析关于 commons collection 利用链的文章&#xff0c;emm 我一开始看不懂&#xff0c;看到很多代码的图头晕。 这篇文章的话其实是我跟着 p 神的文章一路走下来的&#xff0c;所以整个逻辑会按照…

python LLM工具包

阿里云镜像pypi http://mirrors.aliyun.com/pypi/simple/ modelscope魔塔 pip install modelscope https://modelscope.cn/docs/models/download Sentence-transformers pip install -U sentence-transformers pip3 install torch -i https://pypi.tuna.tsinghua.edu.cn/sim…

Linux账号和权限管理

用户账户管理 理论 /etc/passwd 该目录用于保存用户名&#xff0c;宿主目录&#xff0c;登录shel等基本信息 /etc/shadow 该目录用于保存 用户密码&#xff0c;账户有效期等信息 图上每一行中都有用“&#xff1a;”隔断的字段 字段含义&#xff1a; 第1字段:用户账号的名…

晋升系列4:学习方法

每一个成功的人&#xff0c;都是从底层开始打怪&#xff0c;不断的总结经验&#xff0c;一步一步打上来的。在这个过程中需要坚持、总结方法论。 对一件事情长久坚持的人其实比较少&#xff0c;在坚持的人中&#xff0c;不断的总结优化的更少&#xff0c;所以最终达到高级别的…

win32汇编环境,对话框中使用树形视图示例四

;运行效果,当点击张辽时,展示张辽的图像 ;当点击曹仁时,展示曹仁的图像 ;win32汇编环境,对话框中使用树形视图示例四 ;当点击树形视图treeview控件中的某项时,展示某些功能。这里展示的是当点到某个将领时,显示某个将领的图像 ;直接抄进RadAsm可编译运行。重要部分加备注。…

智慧停车小程序:实时车位查询、导航与费用结算一体化

智慧停车小程序:实时车位查询、导航与费用结算一体化 一、城市停车困境的数字化突围 中国机动车保有量突破4.3亿辆,但车位供给缺口达8000万。传统停车管理模式存在三大致命伤: 盲盒式寻位:62%的车主遭遇"地图显示有位,到场已满员"的窘境迷宫式导航:商场停车场…

Windows server网络安全

摘要 安全策略 IP安全策略&#xff0c;简单的来说就是可以通过做相应的策略来达到放行、阻止相关的端口&#xff1b;放行、阻止相关的IP&#xff0c;如何做安全策略&#xff0c;小编为大家详细的写了相关的步骤&#xff1a; 解说步骤&#xff1a; 阻止所有&#xff1a; 打…

充电桩快速搭建springcloud(微服务)+前后端分离(vue),客户端实现微信小程序+ios+app使用uniapp(一处编写,处处编译)

充电桩管理系统是专为中小型充电桩运营商、企业和个人开发者设计的一套高效、灵活的管理平台。系统基于Spring Cloud微服务架构开发&#xff0c;采用模块化设计&#xff0c;支持单机部署与集群部署&#xff0c;能够根据业务需求动态扩展。系统前端使用uniapp框架&#xff0c;可…

小肥柴慢慢手写数据结构(C篇)(4-3 关于栈和队列的讨论)

小肥柴慢慢学习数据结构笔记&#xff08;C篇&#xff09;&#xff08;4-3 关于栈和队列的讨论&#xff09; 目录1 双端栈/队列2 栈与队列的相互转化2-1 栈转化成队列2-2 队列转化成栈 3 经典工程案例3-1 生产者和消费者模型&#xff08;再次重温环形缓冲区&#xff09;3-2 MapR…