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正则…...
观成科技:隐蔽隧道工具Ligolo-ng加密流量分析
1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具,该工具基于TUN接口实现其功能,利用反向TCP/TLS连接建立一条隐蔽的通信信道,支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式,适应复杂网…...
深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录
ASP.NET Core 是一个跨平台的开源框架,用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录,以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...
TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...
第25节 Node.js 断言测试
Node.js的assert模块主要用于编写程序的单元测试时使用,通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试,通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...
学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”
2025年#高考 将在近日拉开帷幕,#AI 监考一度冲上热搜。当AI深度融入高考,#时间同步 不再是辅助功能,而是决定AI监考系统成败的“生命线”。 AI亮相2025高考,40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕,江西、…...
return this;返回的是谁
一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请,不同级别的经理有不同的审批权限: // 抽象处理者:审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...
【VLNs篇】07:NavRL—在动态环境中学习安全飞行
项目内容论文标题NavRL: 在动态环境中学习安全飞行 (NavRL: Learning Safe Flight in Dynamic Environments)核心问题解决无人机在包含静态和动态障碍物的复杂环境中进行安全、高效自主导航的挑战,克服传统方法和现有强化学习方法的局限性。核心算法基于近端策略优化…...
springboot整合VUE之在线教育管理系统简介
可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生,小白用户,想学习知识的 有点基础,想要通过项…...
Golang——6、指针和结构体
指针和结构体 1、指针1.1、指针地址和指针类型1.2、指针取值1.3、new和make 2、结构体2.1、type关键字的使用2.2、结构体的定义和初始化2.3、结构体方法和接收者2.4、给任意类型添加方法2.5、结构体的匿名字段2.6、嵌套结构体2.7、嵌套匿名结构体2.8、结构体的继承 3、结构体与…...
通过MicroSip配置自己的freeswitch服务器进行调试记录
之前用docker安装的freeswitch的,启动是正常的, 但用下面的Microsip连接不上 主要原因有可能一下几个 1、通过下面命令可以看 [rootlocalhost default]# docker exec -it freeswitch fs_cli -x "sofia status profile internal"Name …...
