Python黑魔法揭秘:超强公共操作符和推导式的编程技巧

news2024/10/6 12:33:12

在这里插入图片描述

文章目录

  • 前言
  • 公共操作
    • 1.运算符
      • 1)+ 合并操作
      • 2)* 复制操作
      • in / not in 判断数据在 / 不在容器中
    • 公共方法
      • len()
      • del / del()
      • max()
      • min()
      • range()
      • enumerate()
    • 容器类型转换
      • 1)list() 将某个序列转化为列表
      • tuple() 将某个序列转换为元组
      • set() 将某个序列转换为集合
  • 推导式
    • 列表推导式
    • 字典递推式
    • 集合推导式

前言

公共操作符和推导式是 Python 编程中的两个精华部分,它们能够大幅简化代码并提高开发效率。

那么今天我带大家深入探索 Python 中的公共操作符和推导式,带您一窥其背后的神奇力量。我们将学习如何使用公共操作符来进行常见的数据操作,例如比较、逻辑运算和成员关系判断。这些操作符能够快速且简洁地处理数据,使我们能够更加高效地编写代码。

除了公共操作符,推导式也是 Python 编程中的一项强大技巧。推导式允许我们以精简的语法生成新的数据结构,如列表、字典和集合。通过推导式,我们能够更加简洁地创建和操作数据,减少冗余代码,使程序更加清晰易读。

让我们一起揭开 Python 公共操作符和推导式的神秘面纱,探索它们的魔力,并将其应用于您的下一个编程项目吧!启程吧,进入这个令人激动的 Python 编程世界吧!

公共操作

1.运算符

运算符描述支持的容器类型
+合并字符串、列表、元组
*复制字符串、列表、元组
in元素是否存在字符串、列表、元组、字典
not in元素是否不存在字符串、列表、元组、字典

1)+ 合并操作

合并操作能够将两个相同的容器类型合并成一个容器。

str1 = 'zhangsan'
str2 = 'lisi'
list1 = [1,2,3]
list2 = [4,5,6]
t1 = (1,2,3)
t2 = (4,5,6)
str3 = str1 + str2
list3 = list1 + list2
t3 = t1 + t2
print(str3)
print(list3)
print(t3)

在这里插入图片描述

2)* 复制操作

复制操作能够将一个容器里面的数据复制 n 份。

str1 = 'hello'
list1 = [1,2,3]
t1 = (4,5,6)
str2 = str1 * 3
list2 = list1 * 3
t2 = t1 * 3
print(str2)
print(list2)
print(t2)

在这里插入图片描述

in / not in 判断数据在 / 不在容器中

str1 = 'hello'
list1 = [1,2,3]
t1 = (4,5,6)
print('h' in str1)
print('h' not in str1)
print(1 in list1)
print(1 not in list1)
print(7 in t1)
print(7 not in t1)

在这里插入图片描述

公共方法

函数描述
len()计算容器中元素的个数
del 或 del()删除
max()返回容器中元素最大值
min()返回容器中元素最小值
range(start,end,step)生成从start到end(不包括end),步长为step的数字,供for循环使用
enumerate()函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在for 循环当中。

len()

len方法返回序列中元素的个数。

str1 = 'hello'
list1 = [1,2,3]
t1 = (4,5,6)
print(len(str1))
print(len(list1))
print(len(t1))

在这里插入图片描述

del / del()

del 或 del() 用来删除序列或者序列中的元素。

str1 = 'hello'
del str1
print(str1)

在这里插入图片描述

list1 = [1,2,3]
del(list1[0])
print(list1)

在这里插入图片描述
注意 python 字符串和元组是不可变类型,要想删除只能删除全部,不能单独删除其中的某个数据。

max()

max返回容器中最大的元素

str1 = 'hello'
list1 = [1,2,3]
t1 = (4,5,6)
print(max(str1))
print(max(list1))
print(max(t1))

在这里插入图片描述

min()

min方法容器中最小的元素

str1 = 'hello'
list1 = [1,2,3]
t1 = (4,5,6)
print(min(str1))
print(min(list1))
print(min(t1))

在这里插入图片描述

range()

range方法生成从start开始到end(不包括end)的步长为step的数字,供fro循环使用。

for i in range(0,10,1):
    print(i,end = '\t')

在这里插入图片描述

for i in range(0,10,2):
    print(i,end = '\t')

在这里插入图片描述

当省略start时,默认从0开始,省略步长,默认步长为1。

for i in range(10):
    print(i,end = '\t')

在这里插入图片描述

enumerate()

enumerate(可遍历对象,start = 0)
函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在for 循环当中。

list1 = ['a','b','c','d','e']
for i in enumerate(list1):
    print(i)

在这里插入图片描述

list1 = ['a','b','c','d','e']
for index,i in enumerate(list1,start = 1):
    print(f'下标是:{index},对应字符是:{i}')

在这里插入图片描述

容器类型转换

1)list() 将某个序列转化为列表

str1 = 'hello'
list1 = [1,2,3]
t1 = (4,5,6)
set1 = {80,90,100}
print(list(str1))
print(list(t1))
print(list(set1))

在这里插入图片描述

tuple() 将某个序列转换为元组

str1 = 'hello'
list1 = [1,2,3]
t1 = (4,5,6)
set1 = {80,90,100}
print(tuple(str1))
print(tuple(list1))
print(tuple(set1))

在这里插入图片描述

set() 将某个序列转换为集合

str1 = 'hello'
list1 = [1,2,3,1]
t1 = (4,5,6,6)
set1 = {80,90,100}
print(set(str1))
print(set(list1))
print(set(t1))

在这里插入图片描述
因为集合具有去重功能,所以在转换为集合的时候,会对里面的数据进行去重。

推导式

在Python中,推导式(comprehension)是一种从一个或多个迭代器快速创建可迭代数据对象的方式,如列表、字典、集合等。

推导式极大地简化了代码,有助于读写简洁而高效的Python代码,并且在性能上优于传统的for循环。

本篇博客中,我将为大家说明列表推导式、字典推导式和集合推导式。

列表推导式

我们生成一个 0-10 的列表。

我们先看看如何使用原始循环方式来生成。

# 先创建一个空列表
list1 = []
for i in range(11):
    list1.append(i)
print(list1)

在这里插入图片描述
使用递推公式生成。

list1 = [i for i in range(11)]
print(list1)

在这里插入图片描述
这样一看,很明显,对推公式的代码简洁的很多。

不仅如此,递推公式还可以使用 if 条件来进行筛选。

if 条件筛选
生成0 - 10之间偶数组成的列表。

list1 = [i for i in range(11) if i % 2 == 0]
print(list1)

递推公式还可以使用多个 for 循环。

list1 = [(i,j) for i in range(1,3) for j in range(4)]
print(list1)

在这里插入图片描述

字典递推式

生成一个简单的字典,key为1-5之间的数字,value为对应的数字的平方。

dict1 = {i:i**2 for i in range(1,6)}
print(dict1)

在这里插入图片描述

快速合并两个列表

list1 = ['name','age','gender']
list2 = ['zhangsan',18,'man']
dict1 = {list1[i]:list2[i] for i in range(len(list1))}
print(dict1)

在这里插入图片描述
当两个列表的长度不相同时,应该以长度较短的列表的长度作为range的参数,否则会导致另一个列表下标越界。

集合推导式

list1 = {2,2,3,4,5}
set1 = {i**2 for i in list1}
print(set1)

在这里插入图片描述
时刻记住集合具有去重的特性。

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

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

相关文章

OpenCloudOS社区开源,助力软件开发

早前红帽宣布限制源代码访问性的政策,并解释说RHEL相关源码仅通过CentOS Stream公开,付费客户和合作伙伴可通过Red Hat Customer Portal访问到源代码,由此也导致非客户获取源码越来越麻烦, 据了解,CentOS是红帽发行的…

效率为王!项目管理软件如何帮你提高效率?

对于任何商业组织及其客户来说,低效率的员工和浪费的时间都是一个问题。团队成员懈怠会对团队的整体效率产生负面影响。除了巨大的财务挫折之外,这些问题的混合还导致多次延误、工作质量差和客户不满意。 但有了正确的项目管理软件,企业就可…

Netty各组件执行流程及原理

目录 一、netty执行流程 二、EventLoop 1、事件循环对象EventLoop 2、事件循环对象组EventLoopGroup 3、io任务 4、分工细化 5、handler执行中如何换的group 三、Channel 1、常用方法 2、channelFuture 3、为什么要异步 四、Future & Promise 1、jdk future …

Linux13.文件(上)

1.文件 内容 属性。 2.在程序中创建一个文件,文件是进程创建的(跑起来才有),默认路径是进程的工作路径。 3. C语言中字符串以\0结尾,文件不是。 4.指令 >文件 :清空文件。 5.理解cat指令的实现方式。 6.使用位操作传递宏标记位 7.操…

C语言经典案例-2

今天继续给大家分享C语言学习的经典练手案例 记录在校学习第三天,继续加油 今日案例来源:csdn社区每日一练 1.商品优惠计算机 商品优惠计算器 使用if语句编程实现输入购货金额,输出实际付款金额。购货折扣率如下: 购货金额≤500元…

skywalking linux安装部署

SkyWalking APM tar 下载 结合自己的es版本下载对应的tar 地址:https://archive.apache.org/dist/skywalking/ 由于我使用的是es7所以下载对应版本 拷贝对应链接使用wget下载 wget https://archive.apache.org/dist/skywalking/8.7.0/apache-skywalking-apm-es7…

Neon入门以及常用函数

什么是neon, neon是arm架构下的一个simd的一种方案, 本质上是一些可以用于simd的寄存器 具体参考官方的图: 官方的图说明对于arm开发板, 有16个128bit的寄存器,或者也可以看作是32个64bit的寄存器 列一下常用的neon…

从零开发短视频电商 使用nimbus-jose-jwt进行对称签名和非对称签名的JWT实现

文章目录 什么是JSON Web Token何时使用JSON Web TokenJSON Web Token的结构是什么头部(Header)负载(Payload)签名(Signature)拼接起来 如何使用JSON Web Token工具库依赖流程对称签名非对称签名 总结 JWT的…

超实用攻略!GPT能玩的这么6,你居然还不知道?

开篇 自古以来,智者皆知学无止境,而在我们身边,正有一款奠基于这个原则的AI机器人—ChatGPT,他擅长从网络上学习各种知识,然后把这些知识用在他的对话中。没错,它就是天马行空的闲话家,无所不谈的取经者。可你知道怎样让它更加符合你的使用需求,适应你的工作节奏么?哦…

Qt Quick系列(9)—初识画布

🚀作者:CAccept 🎂专栏:Qt Quick 文章目录 前言代码示例1源码关键知识点 代码示例2源码关键知识点 总结 前言 画布元素的基本思想是使用上下文2D对象(ctx)渲染路径。上下文2D对象包含必要的图形功能&…

一文读懂FPC(12)- FPC的阻抗控制

FPC系列文章目录 1.什么是FPC 2.什么是R-FPC 3,FPC的基材 4.FPC基材压延铜和电解铜的区别 5,FPC的辅材 6,FPC常见的四种类型 7,FPC的生产流程简介 8,R-FPC的生产流程简介 9,FPC的发展及应用 10&a…

Vue :在 VSCode 中安装 yarn 并用 yarn 工具来控制 Vue 项目的详细过程

Ⅰ、 Yarn 工具简介: 1、什么是 yarn 工具: Yarn 是 facebook 发布的一款取代 npm 的资源包管理工具,是一个快速、可靠、安全的依赖管理工具,一款新的 JavaScript 资源包管理工具(吐槽下:最大的弊端是,要通过 npm 来…

java中的String使用注意事项、StringBuilder、StringBuffer、StringJoiner

String使用注意事项 这里第二次创造了0个对象是因为字符串常量池中已经有"abc" StringBuilder 注意StringBuilder支持链式编程 StringBuilder s new StringBuilder("abc"); s.append(666).append("acb" ).append(666); System.out.printl…

89、基于STM32单片机激光测距仪远距离倒车防撞报警器系统设计(程序+原理图+PCB源文件+参考论文+硬件设计资料+元器件清单等)

单片机主芯片选择方案 方案一:AT89C51是美国ATMEL公司生产的低电压,高性能CMOS型8位单片机,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和Flash存储单元&a…

操作系统8:存储器的层次结构及程序的装入和链接

目录 1、存储器的层次结构 (1)多层结构的存储器系统 1.1 - 存储器的多层结构 1.2 - 可执行存储器 (2)主存储器与寄存器 2.1 - 主存储器 2.2 - 寄存器 (3)高速缓存和磁盘缓存 3.1 - 高速缓存 3.2 …

使用wordpress搭建WebStack导航网站记录

0 序言 首先,我来介绍下,这个webstack导航网站实际上是被做成了wordpress的一个主题,具体这个主题的下载地址如下: WordPress 版 WebStack 导航主题https://github.com/owen0o0/WebStack 我们不需要使用git clone命令&…

【观察者模式】 ——每天一点小知识

💧 观察者模式 \color{#FF1493}{观察者模式} 观察者模式💧 🌷 仰望天空,妳我亦是行人.✨ 🦄 个人主页——微风撞见云的博客🎐 🐳 《数据结构与算法》专栏的文章图文并茂🦕…

uni-calendar 日历控件自定义点的颜色功能

增加自定义点的颜色功能,官方空间点的颜色是固定红色 1、修改的页面 uni-calendar-item 在uni-calendar-item页面中的这个标签中加上一个style属性,判断传过来的参数是否存在bgcolor背景颜色,有的话添加背景色,没有则不添加默认系…

【DBA课程-笔记】第 4 章:MongoDB数据库管理备份

课程大纲 MongoDB备份机制数据库的恢复数据库的导出数据库的导入MongoDB面试题 一、MongoDB备份机制 1. MongoDB备份方式 磁阵列文件系统快照 Filesystem Snapshots复制数据文件 CPmongodump 备份 和 mongorestore 恢复工具mongoimport 导入 和 mongoexport 导出工具MongoD…

Qt - 模型视图

模型/视图 概念 模型/视图结构将数据存储和界面展示分离,分别用不同的类实现 模型:存储数据视图:界面上的视图组件显示模型中的数据;在视图组件里修改的数据会被自动保存在模型中 源数据 内存中的一个字符串列表 磁盘文件系统结构…