Python复习:序列(列表元组字符串)
Python复习
- Python复习
- 序列(列表元组字符串)
- 列表定义
- 列表增删改查
- 列表的切片
- 列表的一些常用操作符
- 元组
- 字符串
Python复习
序列(列表元组字符串)
列表元组字符串有一些同样的特点,所以放在一起复习。例如切片操作
列表定义
list
类似于一个毫无规定的数组,可以存放任意的东西。
mix = [1,2,"student",3.14,[3,4]]
列表里可以存放的数据有很多,数字,字符串,浮点数,甚至是另一个列表
列表增删改查
列表添加数据:
添加单一元素使用的是append()
方法
如果想要添加几个元素可以使用extend()
方法,它的本质是使用另一个列表来扩充这个列表
如果想要插入数据的话可以使用insert
方法,它有两个参数,第一个是插入的位置(index)第二个是插入的元素
>>> number = [1,5,6,7]
>>> number.append(10)
>>> number
[1, 5, 6, 7, 10]>>> number.extend([15,88])
>>> number
[1, 5, 6, 7, 10, 15, 88]>>> number.insert(3,99)
>>> number
[1, 5, 6, 99, 7, 10, 15, 88]
>>>
有一些类似于C++中类方法的使用,他们都是对number这个列表进行操作
从列表获取元素:
类似于数组,我们是可以直接通过索引值去获取列表中的元素的
列表的索引值也是从0开始。
我们也可以通过len()
函数来获取列表的长度
>>> number
[1, 5, 6, 99, 7, 10, 15, 88]
>>> len(number)
8>>> number[len(number)-1]
88>>> number.extend([[8,8],[9,9]])
>>> len(number)
10>>> number[-1]
[9, 9]>>> number
[1, 5, 6, 99, 7, 10, 15, 88, [8, 8], [9, 9]]
同时我们也可以看出来,在列表的长度是每个元素加起来的数量,如果有列表元素,只当作为一个
还有我们可以使用负的索引值去寻找元素,列表的最后一个元素的索引值为-1,以此类推。
列表中更改元素:
如果想将列表中的两个值交换我们不需要像C++等一样引入第三变量而是可以使用python的a,b=b,a
这个语法进行交换
>>> a=3
>>> b=4
>>> a,b=b,a
>>> a
4
>>> b
3
>>> number
[1, 5, 6, 99, 7, 10, 15, 88, [8, 8], [9, 9]]
>>> number[1],number[9]=number[9],number[1]
>>> number
[1, [9, 9], 6, 99, 7, 10, 15, 88, [8, 8], 5]
这个语法看起来比较奇怪,资料显示:
x1,x2 = x2,x1的含义是: a = x2 b = x1 x1 = a x2 = b
大概的意思是引入了两个中间变量用于交换数值
从列表中删除数据:
从列表中删除数据我们一般使用三种方法:remove(),pop(),del
remove()
方法是指定一个元素删除,不需要知道位置,但是要知道具体的元素是什么,删除一个列表不存在的元素会报错
pop()
方法是删除指定位置的元素,可以不知道元素到底是什么,如果没有给出index参数默认会删除最后一个元素
del
方法不是一个列表方法,或者BIF,而是一个python语句有一些类似于C++中的清除内存的语句,我们使用del不但可以删除元素,也可以直接删除变量或者列表
>>> number
[1, [9, 9], 6, 99, 7, 10, 15, 88, [8, 8], 5]
>>> number.remove(1)
>>> number
[[9, 9], 6, 99, 7, 10, 15, 88, [8, 8], 5]>>> number.pop(len(number)-2)
[8, 8]
>>> number
[[9, 9], 6, 99, 7, 10, 15, 88, 5]
>>> number.pop()
5
>>> number
[[9, 9], 6, 99, 7, 10, 15, 88]>>> del number[3]
>>> number
[[9, 9], 6, 99, 10, 15, 88]
>>> del number
>>> numberTraceback (most recent call last):File "<pyshell#36>", line 1, in <module>number
NameError: name 'number' is not defined
之所以报错就是是因为我们使用del
删除了number
列表,我们再去获取number
列表系统就会告诉我们这个变量并不存在
列表的切片
切片(slice)是python非常独特的一个属性,切片在本质上并不会修改我们所操作的列表本身,而是为这个列表创建了一个新的拷贝对象返回。
>>> number =[1,2,3,4,5,6,7,8,9,10]
>>> number[2:5]
[3, 4, 5]
>>> number[:2]
[1, 2]
>>> number[3:]
[4, 5, 6, 7, 8, 9, 10]
>>> number[:]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
除了以上的使用方法,我们的切片还可以接受第三个参数,代表的是步长
>>> number[1:9:2]
[2, 4, 6, 8]
>>> number[::2]
[1, 3, 5, 7, 9]>>> number[::-1]
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]>>> del number[::2]
>>> number
[2, 4, 6, 8, 10]
值得我们注意的是我们的步长可以设置为-1,-2等数字进行反向的元素提取。
列表的一些常用操作符
在列表中我们之前学过的很多操作符都可以仍然使用
>>> list1 = [123]
>>> list2 = [234]
>>> list2 > list1
True
>>> list1 = [123,456]
>>> list2 = [234,123]
>>> list1 > list2
False
>>> list1 + list2
[123, 456, 234, 123]
>>> list3 = 3*(list1+list2)
>>> list3
[123, 456, 234, 123, 123, 456, 234, 123, 123, 456, 234, 123]
通过代码我们课可以分析得出,列表比较大小是只会比较第一个元素的,同时列表也可以使用+,*
等操作(有一些类似于C++的运算符重载)
>>> 123 in list3
True
>>> 777 in list3
False
>>> 123 not in list3
False
>>> 777 not in list3
True
>>> number = [1,2,[3,4]]
>>> 1 in number
True
>>> 3 in number
False
>>> [3,4] in number
True
>>>
还有我在python中学到的in,not in
的两个成员关系操作符,通过上面的代码我们可以看出,in和not in
两个算符只能判断一个层次的成员关系。如同break和continue
一样,只可以跳出一层的循环。
同时还有一些常用的列表方法:
count()
方法的作用是统计某一个元素出现的次数
index()
方法的作用是返回某一个元素第一次出现时的索引值,不设置起始结束参数的话默认搜索整个列表
reverse()
方法的作用是将整个列表反转
sort()
的作用是对列表的元素进行排序
>>> number
[1, 2, [3, 4], 12, 2, 1, 2, 3, 2, 1]
>>> number.count(1)
3>>> number.index(2,0,5)
1>>> number.reverse()
>>> number
[1, 2, 3, 2, 1, 2, 12, [3, 4], 2, 1]>>> number.remove([3,4])
>>> number.sort()
>>> number
[1, 1, 1, 2, 2, 2, 2, 3, 12]
元组
元组(tuple)跟列表是比较像的,他们之间最大的区别就是元组只可读不可写。也就是说元组不能进行增删改,只可以查。
除了这个特征以外,我们在创建元组的时候一般是使用小括号()
,而不是中括号[]
符号。
元组的建立:
>>> tuple1 = (1,2,3,4)
>>> tuple1
(1, 2, 3, 4)
>>> type(tuple1)
<class 'tuple'>
我们在查询元组的元素的时候还是要按照tuple1[a]
的方式来寻找,不要误写成tuple(1)
复制一个元组可以通过切片操作:tuple2 = tuple1[:]
或者tuple2 = tuple 1
。
如果你想更改数组,系统就会报错.
注意:
元组的标识符其实是,
也就是说我们可以不使用小括号也是可以创建元组的
tuple1 = 1,2,3,4
同样是成立的
更新和删除元组:
元组虽然不能被修改但是我们可以通过切片复制的操作创建一个新的同名元组,这样就可以更新元组了。
>>> number = 1,2,3,4,5,6
>>> number
(1, 2, 3, 4, 5, 6)>>> number = (number[1],9)+number[2:]
>>> number
(2, 9, 3, 4, 5, 6)
>>> del number
上面的代码就是利用代码的相加创建了一个新的同名数组。同样的,del语句可以将元组删除。
字符串
字符串和元组一样都是只能够查不能修改的,如果非要修改,还是像上文一样使用切片等操作进行。同时那些字符串修改的参数都不是对原字符串的修改,而是返回一个字符串修改后的拷贝。
>>> str1 = "武汉理工大学理学院"
>>> str1.count('理')
2
>>> str1.find('理工')
2>>> str1.replace("理学院","光信科")
'武汉理工大学光信科'
>>> str1.split()
['武汉理工大学理学院']>>> str2 = "武汉","理工","大学"
>>> "-".join(str2)
'武汉-理工-大学'
>>> "".join(str2)
'武汉理工大学'
字符串可以进行一些格式化操作
相关文章:
Python复习:序列(列表元组字符串)
Python复习 Python复习序列(列表元组字符串)列表定义列表增删改查列表的切片列表的一些常用操作符元组字符串 Python复习 序列(列表元组字符串) 列表元组字符串有一些同样的特点,所以放在一起复习。例如切片操作 列…...
DevChat助力成为软件开发的“钢铁侠”
一、背景介绍: 随着人工智能ChatGPT的发展,ChatGPT 的开放将推动人工智能在各个行业的应用,带来诸多的变革和提高,曾经一段时间也是担心对软件行业的影响,会不会以后就不需要这么多程序员了,实际上在当下&…...

c: struct sort descending and ascending in windows and Ubuntu
/*** file StudentStructSort.h* author geovindu,Geovin Du,涂聚文 (geovindu163.com)* ide: vscode c11,c17 Ubuntu 22.4* brief 结构体排序示例* date 2023-11-05* version 0.1* copyright geovindu 站在巨人的肩膀上 Standing on the Shoulders of Giants**/#ifnd…...

Python - 利用 OCR 技术提取视频台词、字幕
目录 一.引言 二.视频处理 1.视频样式 2.视频截取 ◆ 裁切降帧 ◆ 处理效果 3.视频分段 三.OCR 处理 1.视频帧处理 2.文本识别结果 3.后续工作与优化 ◆ 识别去重 ◆ 多线程提效 ◆ 片头片尾优化 四.总结 一.引言 视频经常会配套对应的台词或者字幕,…...

VUE页面导出PDF方案
1,技术方案为:html2canvas把页面生成canvas图片,再通过jspdf生成PDF文件; 2,安装依赖: npm i html2canvas -S npm i jspdf -S 3,封装导出pdf方法exportPdf.js: // 页面导出为pdf格式 //titl…...
机器学习笔记 - WGAN生成对抗网络概述和示例
一、简述 Wasserstein GAN或WGAN是一种生成对抗网络,它最小化地球移动器距离 (EM) 的近似值,而不是原始 GAN 公式中的 Jensen-Shannon 散度。与原始 GAN 相比,它的训练更加稳定,模式崩溃的证据更少,并且具有可用于调试和搜索超参数的有意义的曲线。 Wasserstein 生成对抗网…...
HoudiniVex笔记_P0_Houdini中文文档与翻译
1、19.0版本中文说明文档 链接:https://pan.baidu.com/s/1oJcX5pdnBZ_YWWwOSnFB5g?pwdz3tw 提取码:z3tw 2、翻译插件 有上网条件的同学可以试试这个翻译插件:双语网页翻译 - 电子书翻译 - PDF翻译 - 字幕文件翻译浏览器扩展 | 沉浸式翻译…...
基于PowerWord的储能在主动配电网中的仿真研究
摘要 主动配电网是智能配电网技术发展的高级阶段,分布式储能是主动配电网的重要组成部分,分布式储能的应用对主动配电网的规划、运行、网络拓扑、故障处理和保护、可再生能源电源的协调优化等方面带来不容忽视的影响,针对这一现状,…...
并查集与最小生成树
并查集 HDOJ-1232 畅通工程 题目: 省政府“畅通工程”的目标是使全省任何两个城镇间都可以实现交通,输入现有城镇道路统计表(表中列出了每条道路直接连通的城镇),求最少还需要建设的道路数量。(城镇从1到…...
平面运动机器人的传感器外参标定
简述 对任意两个传感器进行外参标定可以采用手眼标定算法来完成,但是,传统手眼标定算法对于运动具有一定的要求,可以证明,至少需要两个以上轴角方向不同的旋转运动才可以正确估计出外参旋转,因此,如果使用…...

【星海随笔】SDN neutron (二) Neutron-plugin(ML2)
Neutron架构之Neutron-plugin Core-plugin(ML2)篇 Neutron-server接收两种请求: REST API请求:接收REST API请求,并将REST API分发到对应的Plugin(L3RouterPlugin)。 RPC请求:接收Plugin agent请求&#…...

野火i.MX6ULL开发板检测按键evtest(Linux应用开发)
之前一直查找不到evtest,因为没有下载成功,很可能是网络不好,下次可以软件源可以换成国内大学镜像网站。 重新断开板子电源启动,再次连接网络,下载evtest成功!!...

k8s存储
nfs 理论上nfs 其实并不是存储设备,它是一种远程共享存储服务。 k8s 存储卷 volume emptyDir:可以实现pod中的容器之间共享数据, 但是存储卷不能持久化数据,且会随着pod的生命周期一起删除。 hostpash:可以实现持久…...

数据分析实战 | 贝叶斯分类算法——病例自动诊断分析
目录 一、数据及分析对象 二、目的及分析任务 三、方法及工具 四、数据读入 五、数据理解 六、数据准备 七、模型训练 八、模型评价 九、模型调参 十、模型预测 一、数据及分析对象 CSV文件——“bc_data.csv” 数据集链接:https://download.csdn.net/d…...

实用技巧:嵌入式人员使用http服务模拟工具模拟http服务器测试客户端get和post请求
文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/134305752 红胖子(红模仿)的博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结…...
P9836 种树
容易想到分解因数。 对于一个数 p p p 的因数个数,假设它可以被分解质因数成 a 1 i 1 a 2 i 2 a 3 i 3 ⋯ a k c k a_1^{i_1} a_2^{i_2} a_3^{i_3}\cdots a_k^{c_k} a1i1a2i2a3i3⋯akck 的形式,则其因数个数为 ( i 1 1 ) ( i 2 1 )…...

C# 查询腾讯云直播流是否存在的API实现
应用场景 在云考试中,为防止作弊行为的发生,会在考生端部署音视频监控系统,当然还有考官方监控墙系统。在实际应用中,考生一方至少包括两路直播流: (1)前置摄像头:答题的设备要求使…...

JAVA开源项目 于道前端项目 启动步骤参考
1. 安装 启动过程有9个步骤: 1.1 安装 Node JS , V18版本的 (安装步骤省略) 1.2 安装 npm install -g yarn ,node JS里边好像自带npm ,通过npm的命令安装 yarn 1.3 切换到项目中去安装,npm install &a…...

深入理解ElasticSearch分片
1. 路由计算 当索引一个文档的时候,文档会被存储到一个主分片中。 Elasticsearch 如何知道一个文档应该存放到哪个分片中呢?当我们创建文档时,它如何决定这个文档应当被存储在分片 1 还是分片 2 中呢?首先这肯定不会是随机的&…...

【Python】AppUI自动化—appium自动化元素定位、元素事件操作(17)下
文章目录 前言一.Appium 元素定位1.定位方式种类2.如何定位2.1 id定位2.2 className定位2.3 content-desc 定位2.4 Android Uiautomator定位4.1 text定位4.2 text模糊定位4.3 text正则匹配定位4.4 resourceId定位4.5 resourceId正则匹配定位4.6 className定位4.7 className正则…...
生成xcframework
打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...

深入剖析AI大模型:大模型时代的 Prompt 工程全解析
今天聊的内容,我认为是AI开发里面非常重要的内容。它在AI开发里无处不在,当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗",或者让翻译模型 "将这段合同翻译成商务日语" 时,输入的这句话就是 Prompt。…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容
基于 UniApp + WebSocket实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

学校招生小程序源码介绍
基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码,专为学校招生场景量身打造,功能实用且操作便捷。 从技术架构来看,ThinkPHP提供稳定可靠的后台服务,FastAdmin加速开发流程,UniApp则保障小程序在多端有良好的兼…...

【项目实战】通过多模态+LangGraph实现PPT生成助手
PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...

HBuilderX安装(uni-app和小程序开发)
下载HBuilderX 访问官方网站:https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本: Windows版(推荐下载标准版) Windows系统安装步骤 运行安装程序: 双击下载的.exe安装文件 如果出现安全提示&…...

PL0语法,分析器实现!
简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...
聊一聊接口测试的意义有哪些?
目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开,首…...

AI书签管理工具开发全记录(十九):嵌入资源处理
1.前言 📝 在上一篇文章中,我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源,方便后续将资源打包到一个可执行文件中。 2.embed介绍 🎯 Go 1.16 引入了革命性的 embed 包,彻底改变了静态资源管理的…...
Java毕业设计:WML信息查询与后端信息发布系统开发
JAVAWML信息查询与后端信息发布系统实现 一、系统概述 本系统基于Java和WML(无线标记语言)技术开发,实现了移动设备上的信息查询与后端信息发布功能。系统采用B/S架构,服务器端使用Java Servlet处理请求,数据库采用MySQL存储信息࿰…...