Python高级语法

Python高级语

  • 1 列表推导式
    • 1.1 什么是列表推导式
    • 1.2 列表推导式的使用
  • 2 字典推导式
    • 2.1 什么是字典推导式
    • 2.2 字典推导式的使用
  • 3 元组推导式
  • 4 集合推导式
  • 5 三元表达式
    • 5.1 什么是三元表达式
    • 5.2 三元表达式的使用

1 列表推导式

1.1 什么是列表推导式

列表推导式的英文(list cmprehension)是Python独有的一种语法结构,它将推导式(又称解析式)得到的各个结果组成一个新个列表,是一种非常简洁的创建列表的语法,适用于所有需要列表的场景。语法格式如下:

[表达式 for 迭代变量 in 可迭代对象 [if 条件表达式]]

1.2 列表推导式的使用

  • 优化简单for循环

for 循环代码

>>> list_1 = ['a', 'b', 'c']
>>> list_2 = []
>>> for i in list_1:
>>>     list_2.append(i * 2)>>> print(list_2)
['aa', 'bb', 'cc']

列表推导式写法

>>> list_1 = ['a', 'b', 'c']
>>> list_2 = [i * 2 for i in list_1]
>>> print(list_2)
['aa', 'bb', 'cc']# 若不想取list_1列表中的全部元素,可用if语句做过滤条件,可迭代变量也可用于if语句中
>>> list_2 = [i * 2 for i in list_1 if i != 'b']
>>> print(list_2)
['aa', 'cc']
  • 优化两层for循环
>>> list_1 = [(m, n) for m in range(3) for n in range(3)]
>>> print(list_1)
[(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]

多层for循环一样支持if语句

>>> list_1 = [(m, n) for m in range(3) if m > 1 for n in range(3) if n > 1]
>>> print(list_1)
[(2, 2)]
>>> list_1 = [(m, n) for m in range(3) if m > 1 for n in range(3)]
>>> print(list_1)
[(2, 0), (2, 1), (2, 2)]
>>> list_1 = [(m, n) for m in range(3) for n in range(3) if m > 1 and n > 1]
>>> print(list_1)
[(2, 2)]
  • 列表推导式支持嵌套
>>> list_1 = [n + 2 for n in [m + 1 for m in range(3)]]
>>> print(list_1)
[3, 4, 5]

2 字典推导式

2.1 什么是字典推导式

字典推导式的概念与列表推导式一样,只不过返回的结果是字典。语法格式如下:

{键:值 for 迭代变量 in 可迭代对象 [if 条件表达式]}

2.2 字典推导式的使用

注意:字典中不能出现同名的 key,第二次出现就把第一个值覆盖掉了,因此 value 都是 1

>>> dict_1 = {key: value for key in range(3) for value in range(2)}
>>> print(dict_1)
{0: 1, 1: 1, 2: 1}
>>> dict_1 = {key: value for key in range(3) for value in range(3)}
>>> print(dict_1)
{0: 2, 1: 2, 2: 2}

常用场景,遍历一个具有键值关系的可迭代对象

>>> tuple_list = [('name', '张三'), ('age', 28),('class', '9701'), ('like', 'python')]
>>> dict_1 = {key: value for key, value in tuple_list}
>>> print(dict_1)
{'name': '张三', 'age': 28, 'class': '9701', 'like': 'python'}

3 元组推导式

与列表和字典推导式不同的是它不是返回一个元组,而是返回一个生成器对象,也可以叫生成器推导式,示例如下:

>>> tuple_1 = (i for i in range(5))
>>> print(tuple_1)
<generator object <genexpr> at 0x000002097F25F1D0>

并没有像我们想像的那样返回(0, 1, 2, 3, 4)这样的元组,若需返回元组加上转换函数即可:

>>> tuple_1 = (i for i in range(5))
>>> print(tuple(tuple_1))
(0, 1, 2, 3, 4)

4 集合推导式

集合推导式需要注意的是,集合是无序的,在使用时会自动去掉重复的元素。

>>> set_1 = {i for i in 'HelloWorld'}
>>> print(set_1)
{'d', 'W', 'e', 'r', 'o', 'H', 'l'}

5 三元表达式

5.1 什么是三元表达式

Python中没有像C或Java语言中的三元表达式(三目运算符)的概念,但也有类似的语法,格式如下:

if条件为True执行语句 if 条件表达式 else if条件为False执行语句

5.2 三元表达式的使用

  • 简化 if 语句
# 原 if 语句
age = 30
if age >= 18 :rs = "成年"
else:rs = "未成年"# 使用三元表达式
age = 30
rs = "成年" if age >= 18 else "未成年"
  • 返回多个语句
age = 30
rs = "成年", "大于18岁" if age >= 18 else "未成年"
print(rs)
  • 在函数中使用三元表达式
def e_num(num):return True if num % 2 == 0 else False
  • 三元表达式与 lambda一起使用
# 返回两个数的最大值
>>> max = lambda a, b: a if a > b else b
>>> print(max(10, 15))
15
>>> print(max(88, 15))
88

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

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

相关文章

docker安装配置dnsmasq

docker下载安装 参考&#xff1a;docker安装、卸载、配置、镜像 如果是低版本的额ubuntu&#xff0c;比如ubuntu16.04.7 LTS&#xff0c;为了加快下载速度&#xff0c;参考&#xff1a;Ubuntu16.04LTS安装Docker。 docker安装dnsmasq 下载dnsmasq镜像 首先镜像我们可以选择…

代码随想录 动态规划-完全背包问题

52. 携带研究材料 时间限制&#xff1a;1.000S 空间限制&#xff1a;128MB 题目描述 小明是一位科学家&#xff0c;他需要参加一场重要的国际科学大会&#xff0c;以展示自己的最新研究成果。他需要带一些研究材料&#xff0c;但是他的行李箱空间有限。这些研究材料包括实验…

Could not locate zlibwapi.dll. Please make sure it is in your library path!

背景 运行PaddleOCR时&#xff0c;用的CUDA11.6配的是cuDNN8.4。但是运行后却报错如下。 解决手段 去网上找到这两个文件&#xff0c;现在英伟达好像不能下载了&#xff0c;但是可以去网盘下载。然后把dll文件放入CUDA11.6文件下的bin目录&#xff0c;而lib文件放入CUDA11.6文…

5.1.4.2、【AI技术新纪元:Spring AI解码】Llama2 Chat

Llama2 Chat Meta 的 Llama 2 Chat 是 Llama 2 系列大型语言模型的一部分。它在基于对话的应用程序中表现出色,参数规模范围从 70 亿到 700 亿不等。利用公共数据集和超过 100 万次人类注释,Llama Chat 提供了上下文感知的对话。 通过从公共数据源获取的 2 万亿标记进行训练…

基于 RisingWave 和 Kafka 构建实时网络安全解决方案

实时威胁检测可实时监控和分析数据&#xff0c;并及时对潜在的安全威胁作出识别和响应。与依赖定期扫描或回顾性分析的安全措施不同&#xff0c;实时威胁检测系统可提供即时警报&#xff0c;并启动自动响应来降低风险&#xff0c;而不会出现高延迟。 实时威胁检测有许多不同的…

英特尔生态的深度学习科研环境配置-A770为例

之前发过在Intel A770 GPU安装oneAPI的教程&#xff0c;但那个方法是用于WSL上。总所周知&#xff0c;在WSL使用显卡会有性能损失的。而当初买这台机器的时候我不在场&#xff0c;所以我这几天刚好有空把机器给重装成Ubuntu了。本篇不限于安装oneAPI&#xff0c;因为在英特尔的…

【01】htmlcssgit网络基础知识

一、html&css 防脱发神器 一图胜千言 使用border-box控制尺寸更加直观,因此,很多网站都会加入下面的代码 * {margin: 0;padding: 0;box-sizing: border-box; }颜色的 alpha 通道 颜色的 alpha 通道标识了色彩的透明度,它是一个 0~1 之间的取值,0 标识完全透明,1…

探索什么便签软件好用,可以和手机同步的便签软件

在信息技术日新月异的今天&#xff0c;各类数字工具已经成为我们生活与工作的重要助手。便签软件作为一种简单却高效的辅助工具&#xff0c;悄然改变着人们的记录习惯与时间管理方式。而在诸多便签软件中&#xff0c;能够实现手机与电脑同步功能的产品尤显其独特的价值。那么&a…

数据结构 之 哈希表习题 力扣oj(附加思路版)

哈希表用法 哈希表&#xff1a;键 值对 键&#xff1a;可以看成数组下标&#xff0c;但是哈希表中的建可以是任意类型的&#xff0c;建不能重复,可以不是连续的 值&#xff1a;可以看成数组中的元素&#xff0c;值可以重复&#xff0c;也可以是任意类型的数据 #include<iost…

R语言程序设计(零基础速通R语言语法和常见函数的使用)

目录 1.Rstudio中的一些快捷键 2.R对象的属性 3.R语言中常用的运算符​编辑 4.R的数据结构 向量 如何建立向量&#xff1f; 如何从向量里面提取元素&#xff1f; 矩阵 如何建立矩阵&#xff1f; 如何从矩阵里面提取元素&#xff1f; 数据框 如何建立数据框&#xf…

python-pandas基础学习

可参考&#xff1a; pandas&#xff1a;http://pandas.pydata.org/docs/user_guide/10min.html 一、基础知识 DataFrame 方法&#xff0c;可以将一组数据&#xff08;ndarray、series, map, list, dict 等类型&#xff09;转化为表格型数据 import pandas as pd data {name: …

前端三件套 | 综合练习:模拟抽奖活动,实现一个简单的随机抽取并显示三名获胜者

随机运行结果如下&#xff1a; 参考代码如下&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><tit…

鸿蒙-自定义组件-语法

目录 语法组成 在学习自定义组件前&#xff0c;先看一下ArkTS的组成 装饰器 用于装饰类、结构、方法以及变量&#xff0c;并赋予其特殊的含义。如上述示例中Entry、Component和State都是装饰器 Entry 表示该自定义组件为入口组件 Component 表示自定义组件 State 表示组…

python基础——字符串的常见操作方法【下标索引,index,count,len,replace,split,strip】

&#x1f4dd;前言&#xff1a; 字符串是一种有序的&#xff0c;允许重复字符串存在的&#xff0c;不可修改的序列 这篇文章主要总结一下python中有关字符串的部分相关知识&#xff0c;以及字符串的常见操作方法&#xff1a; 1&#xff0c;和其他序列极其类似的操作方法 2&…

2024/03/18(网络编程·day4)

一、思维导图 二、广播 广播发送端 #include<myhead.h> int main(int argc, const char *argv[]) {//1、创建套接字int sfd socket(AF_INET,SOCK_DGRAM,0);if(sfd -1){perror("socket error");return -1;}//2、设置允许广播int broadcast 1;if(setsockopt…

Lua中文语言编程源码-第七节,更改lstrlib.c 标准字符串操作与模式匹配库函数, 使Lua加载中文库关键词(标准字符串操作与模式匹配库相关)

源码已经更新在CSDN的码库里&#xff1a; git clone https://gitcode.com/funsion/CLua.git在src文件夹下的lstrlib.c 标准字符串操作与模式匹配库函数&#xff0c;表明这个C源文件实现了Lua的标准字符串操作与模式匹配库&#xff0c;即提供了与字符串操作相关的API和功能实现…

分享一些程序员相关的网址

0️⃣【#电子书】 Zlibrary&#xff08; https://1lib.us/&#xff09;是个电子书网站&#xff0c;可以搜到很多很多电子书&#xff0c;不管是中文还是英文原版。 1️⃣【#软件设计】如果你想了解一些软件技术&#xff0c;这里有个网站可以帮到你 - http://aosabook.org/ 。这…

嵌入式DSP教学实验箱操作教程:2-20 数模转换实验(模拟SPI总线输出电压值)

一、实验目的 掌握GPIO模拟SPI总线的使用&#xff0c;了解AD5724的芯片特性和使用&#xff0c;并实现基于AD5724输出电压值。 二、实验原理 StarterWare StarterWare是一个免费的软件开发包&#xff0c;它包含了示例应用程序。StarterWare提供了一套完整的GPIO寄存器配置接…

在吗?腾讯云服务器2024降价了61元一年,要么?

腾讯云服务器多少钱一年&#xff1f;61元一年起。2024年最新腾讯云服务器优惠价格表&#xff0c;腾讯云轻量2核2G3M服务器61元一年、2核2G4M服务器99元一年可买三年、2核4G5M服务器165元一年、3年756元、轻量4核8M12M服务器646元15个月、4核16G10M配置32元1个月、312元一年、8核…

QT C++ QButtonGroup应用

//QT 中&#xff0c;按钮数量比较少&#xff0c;可以分别用各按钮的信号和槽处理。 //当按钮数量较多时&#xff0c;用QButtonGroup可以实现共用一个槽函数&#xff0c;批量处理&#xff0c;减少垃圾代码&#xff0c; //减少出错。 //开发平台&#xff1a;win10QT6.2.4 MSVC…