Python序列操作指南:列表、字符串和元组的基本用法和操作
文章目录
- 序列
- 列表
- 创建列表
- 访问元素
- 修改元素
- 添加和删除元素
- range()
- 字符串
- 创建字符串
- 访问字符
- 字符串切片
- 修改字符串
- 元组
- 创建元组
- 访问元素
- 获取元素数量
- 元组的特点:
- 可变对象
- 改变对象的值
- 改变变量的指向
- 比较运算符
- 总结
- python精品专栏推荐
- python基础知识(0基础入门)
- python爬虫知识
序列
序列是Python中最基本的一种数据结构,它用于保存一组有序的数据。所有的数据在序列中都有一个唯一的位置(索引),并且序列中的数据会按照添加的顺序来分配索引。Python中的序列包括列表、字符串、元组等类型。
列表
列表是Python中最常用的数据类型之一,它是一个可变的有序序列,可以通过索引来访问其中的元素。下面是一些常见的操作:
创建列表
列表可以通过方括号 [] 来创建,其中可以包含任意类型的元素。
my_list = [1, 2, "hello", 3.5, True]
print(my_list) # 输出:[1, 2, 'hello', 3.5, True]
访问元素
可以通过索引来访问列表中的元素,索引从0开始,表示第一个元素。
my_list = [1, 2, "hello", 3.5, True]# 访问第一个元素
print(my_list[0]) # 输出:1# 访问倒数第一个元素
print(my_list[-1]) # 输出:True
修改元素
可以通过索引来修改列表中的元素。
my_list = [1, 2, "hello", 3.5, True]# 修改第三个元素
my_list[2] = "world"
print(my_list) # 输出:[1, 2, 'world', 3.5, True]
添加和删除元素
可以使用 append() 方法向列表末尾添加元素,使用 insert() 方法在指定位置插入元素,使用 pop() 方法删除指定位置的元素。
my_list = [1, 2, "hello", 3.5, True]# 添加元素
my_list.append("how are you")
print(my_list) # 输出:[1, 2, 'hello', 3.5, True, 'how are you']# 在指定位置插入元素
my_list.insert(2, "Python")
print(my_list) # 输出:[1, 2, 'Python', 'hello', 3.5, True, 'how are you']# 删除指定位置的元素
my_list.pop(2)
print(my_list) # 输出:[1, 2, 'hello', 3.5, True, 'how are you']
range()
range()函数用于生成一个自然数序列,具体如下:
range()函数可以使用三个参数进行调用,分别是起始位置、结束位置和步长。具体说明如下:
-
如果只提供一个参数,即
range(stop),则默认起始位置为0,步长为1,生成一个从0到stop-1的自然数序列。r = range(5) # 生成序列[0, 1, 2, 3, 4] -
如果提供两个参数,即
range(start, stop),则生成一个从start到stop-1的自然数序列,步长默认为1。r = range(0, 10) # 生成序列[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] -
如果提供三个参数,即
range(start, stop, step),则生成一个从start到stop-1的自然数序列,步长为step。r = range(0, 10, 2) # 生成序列[0, 2, 4, 6, 8] r = range(10, 0, -1) # 生成序列[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
需要注意的是,range()函数返回的是一个range对象,而不是直接返回一个列表。如果需要将range对象转换为列表,可以使用list()函数进行转换,如list(range(5))。
通过range()函数可以方便地在for循环中执行指定次数的迭代操作,可以更简洁地实现类似的效果。
字符串
字符串是一种不可变的序列类型,表示由一系列字符组成的对象。下面是一些常见的操作:
创建字符串
字符串可以通过单引号 ' ' 或双引号 " " 来创建。
my_string = "hello world"
print(my_string) # 输出:hello world
访问字符
可以通过索引来访问字符串中的字符,索引从0开始,表示第一个字符。
my_string = "hello world"# 访问第一个字符
print(my_string[0]) # 输出:h# 访问倒数第一个字符
print(my_string[-1]) # 输出:d
字符串切片
可以使用切片操作来获取指定范围内的子字符串,语法为 [起始索引:结束索引]。不包含结束索引所在位置的字符。
my_string = "hello world"# 获取前5个字符
print(my_string[:5]) # 输出:hello# 获取从第6个字符开始到最后的子字符串
print(my_string[6:]) # 输出:world
修改字符串
由于字符串是不可变类型,不能直接修改其中的字符。如果需要修改字符串,可以使用字符串的切片和加法操作来实现。
my_string = "hello world"# 修改第一个字符
my_string = "H" + my_string[1:]
print(my_string) # 输出:Hello world
元组
元组是一种不可变的序列类型,表示由一系列元素组成的对象。与列表不同,元组的元素不可更改。
下面是一些常见的操作:
创建元组
元组可以通过圆括号 () 来创建,其中可以包含任意类型的元素。
my_tuple = (1, 2, "hello", 3.5, True)
print(my_tuple) # 输出:(1, 2, 'hello', 3.5, True)
访问元素
可以通过索引来访问元组中的元素,索引从0开始,表示第一个元素。
my_tuple = (1, 2, "hello", 3.5, True)# 访问第一个元素
print(my_tuple[0]) # 输出:1# 访问倒数第一个元素
print(my_tuple[-1]) # 输出:True
获取元素数量
可以使用 len() 方法获取元组中元素的数量。
my_tuple = (1, 2, "hello", 3.5, True)# 获取元素数量
print(len(my_tuple)) # 输出:5
元组的特点:
-
元组使用圆括号
()来创建,可以是空元组或包含多个元素的元组。empty_tuple = () my_tuple = (1, 2, 3, 4, 5) -
元组中的元素可以是任意数据类型,并且元素之间用逗号
,分隔。my_tuple = (10, 'hello', True, [1, 2, 3]) -
元组是不可变的,意味着一旦创建,就不能修改元组的元素。尝试修改元组的元素会引发
TypeError错误。my_tuple[0] = 100 # 报错:TypeError: 'tuple' object does not support item assignment -
可以使用索引访问元组中的元素,索引从0开始。也可以使用切片来获取元组的子集。
print(my_tuple[0]) # 输出:10 print(my_tuple[1:3]) # 输出:('hello', True) -
元组支持解包(或称为解构),可以将元组的每个元素赋值给一个变量。
a, b, c, d = my_tuple print(a) # 输出:10 print(b) # 输出:'hello' -
如果不确定元组的长度,可以使用
*来获取剩余的元素。a, *b = my_tuple print(a) # 输出:10 print(b) # 输出:['hello', True, [1, 2, 3]]
元组在以下情况下比较有用:
- 当希望数据不可变时,可以使用元组作为容器。
- 在函数中返回多个值时,可以使用元组简洁地返回多个值。
请注意,元组是不可变对象,所以无法向元组中添加、删除或修改元素。如果需要在操作数据时进行修改,应使用列表(list)类型。
可变对象
每个对象中都保存了三个数据:
- id(标识)
- type(类型)
- value(值)
对于列表来说,它就是一个可变对象。比如我们有一个列表 a = [1, 2, 3]。
现在让我们来进行一些操作:
改变对象的值
我们可以通过变量去修改对象的值,例如 a[0] = 10。这个操作并不会改变变量所指向的对象,而只是修改了对象的值。
请注意以下几点:
- 当我们修改对象时,如果有其他变量也指向了该对象,那么修改也会在其他变量中体现。
- 修改对象的值并不会改变变量本身。
改变变量的指向
除了改变对象的值,我们还可以给变量重新赋值来改变其指向的对象。例如,执行 a = [4, 5, 6]。
请注意以下几点:
- 给变量重新赋值会改变变量所指向的对象。
- 为一个变量重新赋值时,不会影响其他的变量。
总结起来,只有在为变量赋值时才是真正修改了变量,而其他操作都是在修改对象。
下面是一个代码示例,帮助理解上述概念:
a = [1, 2, 3]
b = aprint(a) # 输出:[1, 2, 3]
print(b) # 输出:[1, 2, 3]a[0] = 10print(a) # 输出:[10, 2, 3]
print(b) # 输出:[10, 2, 3]a = [4, 5, 6]print(a) # 输出:[4, 5, 6]
print(b) # 输出:[10, 2, 3]
比较运算符
在Python中,我们有几种比较运算符可以用来比较两个对象的值和身份:
==:比较两个对象的值是否相等。!=:比较两个对象的值是否不相等。is:比较两个对象的身份是否相等,即是否指向同一个对象。is not:比较两个对象的身份是否不相等。
考虑以下代码:
a = [1, 2, 3]
b = [1, 2, 3]print(a, b)
print(id(a), id(b))
print(a == b) # 输出:True,a和b的值相等
print(a is b) # 输出:False,a和b不是同一个对象
在这个例子中,我们创建了两个列表 a 和 b,它们的值是相等的,但它们不是同一个对象。所以,使用==运算符会返回True,而使用is运算符会返回False。
总结
本篇博文涵盖了多个与序列相关的主题。
首先,我们介绍了不同类型的序列,包括列表、字符串和元组。我们讨论了如何创建和访问它们,并提供了修改元素、添加和删除元素的方法。接下来,我们介绍了range()函数,它可以方便地生成自然数序列,用于循环和迭代操作。
在讨论字符串方面,我们学习了如何创建字符串、访问单个字符以及使用切片来获取子串。此外,我们指出了字符串是不可变对象,无法直接修改,但可以通过创建新的字符串来实现修改。
当讨论元组时,我们解释了如何创建元组、访问元素以及获取元组的长度。同时,我们强调了元组是不可变对象,一旦创建就无法修改。我们还介绍了如何改变对象的值和改变变量指向的操作。
总体而言,本篇博文提供了关于序列、range()函数、字符串和元组的基本知识和操作。这些内容对于编程中处理数据、循环迭代和操作不同类型的序列非常重要。
希望本篇博文能够帮助您对序列和相关操作有更清晰的了解。
python精品专栏推荐
python基础知识(0基础入门)
【python基础知识】0.print()函数
【python基础知识】1.数据类型、数据应用、数据转换
【python基础知识】2.if条件判断与条件嵌套
【python基础知识】3.input()函数
【python基础知识】4.列表和字典
【python基础知识】5.for循环和while循环
【python基础知识】6.布尔值和四种语句(break、continue、pass、else)
【python基础知识】7.实操-用Python实现“文字PK”小游戏(一)
【python基础知识】7.实操-用Python实现“文字PK”小游戏(二)
【python基础知识】8.编程思维:如何解决问题-思维篇
【python基础知识】9.函数的定义和调用
【python基础知识】10.用函数编写程序 - 实操篇
【python基础知识】10.用Python实现石头剪刀布小游戏-函数实操篇
【python基础知识】11.如何debug -常见报错原因及排查思路 - 思维篇
【python基础知识】12.类与对象(一)
【python基础知识】12.类与对象(二)
【python基础知识】13.类与对象(三)
【python基础知识】13.类与对象(四)
【python基础知识】14.图书管理系统的搭建(类与对象实操)
【python基础知识】15.编码基础知识
【python基础知识】16.文件读写基础及操作
【python基础知识】16.“古诗默写题”的python实现(文件读写和编码-实操篇)
【python基础知识】17.模块的概念以及如何引入
【python基础知识】18.实操-使用python自动群发邮件
【python基础知识】19.产品思维以及流程图的使用 - 思维篇
【python基础知识】20.“午饭吃什么”的python实现(产品思维-实操篇)
【python基础知识】21.高效偷懒的正确打开方式-毕业篇
【python文件处理】CSV文件的读取、处理、写入
【python文件处理】Excel自动处理(使用 openpyxl)
【python文件处理】-excel格式处理
python爬虫知识
【python爬虫】1.爬虫基础知识
【python爬虫】2.网页基础知识
【python爬虫】3.爬虫初体验(BeautifulSoup解析)
【python爬虫】4.爬虫实操(菜品爬取)
【python爬虫】5.爬虫实操(歌词爬取)
【python爬虫】6.爬虫实操(带参数请求数据)
【python爬虫】7.爬到的数据存到哪里?
【python爬虫】8.温故而知新
【python爬虫】9.带着小饼干登录(cookies)
【python爬虫】10.指挥浏览器自动工作(selenium)
【python爬虫】11.让爬虫按时向你汇报
【python爬虫】12.建立你的爬虫大军
【python爬虫】13.吃什么不会胖(爬虫实操练习)
【python爬虫】14.Scrapy框架讲解
【python爬虫】15.Scrapy框架实战(热门职位爬取)
【python爬虫】16.爬虫知识点总结复习
相关文章:
Python序列操作指南:列表、字符串和元组的基本用法和操作
文章目录 序列列表创建列表访问元素修改元素添加和删除元素 range()字符串创建字符串访问字符字符串切片修改字符串 元组创建元组访问元素获取元素数量元组的特点: 可变对象改变对象的值改变变量的指向比较运算符总结 python精品专栏推荐python基础知识(…...
【已更新代码图表】2023数学建模国赛E题python代码--黄河水沙监测数据分析
E 题 黄河水沙监测数据分析 黄河是中华民族的母亲河。研究黄河水沙通量的变化规律对沿黄流域的环境治理、气候变 化和人民生活的影响,以及对优化黄河流域水资源分配、协调人地关系、调水调沙、防洪减灾 等方面都具有重要的理论指导意义。 附件 1 给出了位于小浪底水…...
【前端】CSS-Grid网格布局
目录 一、grid布局是什么二、grid布局的属性三、容器属性1、display①、语句②、属性值 2、grid-template-columns属性、grid-template-rows属性①、定义②、属性值1)、固定的列宽和行高2)、repeat()函数3)、auto-fill关键字4)、f…...
计算机竞赛 基于深度学习的动物识别 - 卷积神经网络 机器视觉 图像识别
文章目录 0 前言1 背景2 算法原理2.1 动物识别方法概况2.2 常用的网络模型2.2.1 B-CNN2.2.2 SSD 3 SSD动物目标检测流程4 实现效果5 部分相关代码5.1 数据预处理5.2 构建卷积神经网络5.3 tensorflow计算图可视化5.4 网络模型训练5.5 对猫狗图像进行2分类 6 最后 0 前言 &#…...
2023-9-8 求组合数(二)
题目链接:求组合数 II #include <iostream> #include <algorithm>using namespace std;typedef long long LL; const int mod 1e9 7; const int N 100010;// 阶乘,阶乘的逆 int fact[N], infact[N];LL qmi(int a, int k, int p) {int res…...
k8s service的一些特性
文章目录 Service分发负载的策略同一端口通过不同协议暴露Headless Service的负载分发策略 Service分发负载的策略 大家都知道,一个service可以对应多个pod,那么一定要有一些方法来把service接收到的请求(负载)转发到pod上。 一般…...
C++中std::enable_if和SFINAE介绍
作为一个标准的C++模板类,我们先看下enable_if的定义: // STRUCT TEMPLATE enable_if template <bool _Test, class _Ty = void> struct enable_if {}; // no member "type" when !_Testtemplate <class _Ty> struct enable_if<true, _Ty> { //…...
华为OD机考算法题:数字加减游戏
目录 题目部分 解读与分析 代码实现 题目部分 题目数字加减游戏难度难题目说明小明在玩一个数字加减游戏,只使用加法或者减法,将一个数字 s 变成数字 t 。 每个回合,小明可以用当前的数字加上或减去一个数字。 现在有两种数字可以用来加减…...
WPF命令
在设计良好的Windows应用程序中,应用程序逻辑不应位于事件处理程序中,而应在更高层的方法中编写代码。其中的每个方法都代表单独的应用程序任务。每个任务可能依赖其他库。 使用这种设计最明显的方式是在需要的地方添加事件处理程序,并使用各…...
Unity中Shader的屏幕抓取 GrabPass
文章目录 前言一、抓取1、抓取指令2、在使用抓取的屏幕前,需要像使用属性一样定义一下,_GrabTexture这个名字是Unity定义好的 前言 Unity中Shader的屏幕抓取 GrabPass 一、抓取 1、抓取指令 屏幕的抓取需要使用一个Pass GrabPass{} GrabPass{“NAME”} 2、在使用…...
手撕 队列
队列的基本概念 只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出 入队列:进行插入操作的一端称为队尾 出队列:进行删除操作的一端称为队头 队列用链表实现 队列的实现 队列的定义 队列…...
【autodl/linux配环境心得:conda/本地配cuda,cudnn及pytorch心得】-未完成
linux配环境心得:conda/本地配cuda,cudnn及pytorch心得 我们服务器遇到的大多数找不到包的问题一,服务器安装cuda和cudnn使用conda在线安装cuda和cudnn使用conda进行本地安装检查conda安装的cuda和cudnn本地直接安装cuda和cudnn方法一&#x…...
macOS Ventura 13.5.2(22G91)发布,附黑/白苹果镜像下载地址
系统介绍(下载请百度搜索:黑果魏叔) 黑果魏叔 9 月 8 日消息,苹果今日向 Mac 电脑用户推送了 macOS 13.5.2 更新(内部版本号:22G91),本次更新距离上次发布隔了 21 天。 本次更新查…...
vue 子组件向父组件传递参数 子传父
子组件中写: this.$emit(RowCount,res.data.RowCount); 父组件中写: getMFGLRowCount(val){ //父组件中的方法: 接收子组件传过来的参数值赋值给父组件的变量 //this.totalCount val; alert("这…...
自然语言处理学习笔记(八)———— 准确率
目录 1.准确率定义 2.混淆矩阵与TP/FN/FP/TN 3. 精确率 4.召回率 5.F1值 6.中文分词的P、R、F1计算 7.实现 1.准确率定义 准确率是用来衡量一个系统的准确程度的值,可以理解为一系列评测指标。当预测与答案的数量相等时,准确率指的是系统做出正确判…...
Matlab 如何选择窗函数和 FFT 的长度
Matlab 如何选择窗函数和 FFT 的长度 1、常用的四种窗函数 对于实际信号序列,如何选取窗函数呢?一般来说,选择第一旁瓣衰减大,旁瓣峰值衰减快的窗函数有利于緩解截断过程中产生的頻泄漏问题。但具有这两个特性的窗函数࿰…...
node.js下载安装环境配置以及快速使用
目录 一、下载 二、安装 三、测试安装是否成功 四、配置环境 五、测试配置环境是否成功 六、安装淘宝镜像 七、快速上手 1、建立一个自己的工作目录 2、下载工作代码 八、各种配置文件匹配问题入坑 九、总结 一、下载 Node.js 中文网 想选择其他版本或者其他系统使用…...
使用栈检查括号的合法性 C 实现
使用栈检查括号的合法性 思路讲解:首先从数组数组0下标开始,如果是左括号直接无脑压入栈,直到出现右括号开始判断合法与否。遇到右括号分两种情况,第一种是空栈的情况,也就是说我们第一个字符就是右括号,那…...
小白备战大厂算法笔试(四)——哈希表
文章目录 哈希表常用操作简单实现冲突与扩容链式地址开放寻址线性探测多次哈希 哈希表 哈希表,又称散列表,其通过建立键 key 与值 value 之间的映射,实现高效的元素查询。具体而言,我们向哈希表输入一个键 key ,则可以…...
云原生Kubernetes:pod基础
目录 一、理论 1.pod 2.pod容器分类 3.镜像拉取策略(image PullPolicy) 二、实验 1.Pod容器的分类 2.镜像拉取策略 三、问题 1.apiVersion 报错 2.pod v1版本资源未注册 3.取行显示指定pod信息 四、总结 一、理论 1.pod (1) 概念 Pod是ku…...
多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度
一、引言:多云环境的技术复杂性本质 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时,基础设施的技术债呈现指数级积累。网络连接、身份认证、成本管理这三大核心挑战相互嵌套:跨云网络构建数据…...
Prompt Tuning、P-Tuning、Prefix Tuning的区别
一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...
新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案
随着新能源汽车的快速普及,充电桩作为核心配套设施,其安全性与可靠性备受关注。然而,在高温、高负荷运行环境下,充电桩的散热问题与消防安全隐患日益凸显,成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...
【HTML-16】深入理解HTML中的块元素与行内元素
HTML元素根据其显示特性可以分为两大类:块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...
2023赣州旅游投资集团
单选题 1.“不登高山,不知天之高也;不临深溪,不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...
MySQL 知识小结(一)
一、my.cnf配置详解 我们知道安装MySQL有两种方式来安装咱们的MySQL数据库,分别是二进制安装编译数据库或者使用三方yum来进行安装,第三方yum的安装相对于二进制压缩包的安装更快捷,但是文件存放起来数据比较冗余,用二进制能够更好管理咱们M…...
2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)
安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...
【 java 虚拟机知识 第一篇 】
目录 1.内存模型 1.1.JVM内存模型的介绍 1.2.堆和栈的区别 1.3.栈的存储细节 1.4.堆的部分 1.5.程序计数器的作用 1.6.方法区的内容 1.7.字符串池 1.8.引用类型 1.9.内存泄漏与内存溢出 1.10.会出现内存溢出的结构 1.内存模型 1.1.JVM内存模型的介绍 内存模型主要分…...
在 Spring Boot 项目里,MYSQL中json类型字段使用
前言: 因为程序特殊需求导致,需要mysql数据库存储json类型数据,因此记录一下使用流程 1.java实体中新增字段 private List<User> users 2.增加mybatis-plus注解 TableField(typeHandler FastjsonTypeHandler.class) private Lis…...
LOOI机器人的技术实现解析:从手势识别到边缘检测
LOOI机器人作为一款创新的AI硬件产品,通过将智能手机转变为具有情感交互能力的桌面机器人,展示了前沿AI技术与传统硬件设计的完美结合。作为AI与玩具领域的专家,我将全面解析LOOI的技术实现架构,特别是其手势识别、物体识别和环境…...
