Python中元组的概念及应用小结

目录
  • 1.元组的概念
  • 2.元组的基本使用
    • 2.1.定义一个元组
    • 2.2.定义一个空元组
    • 2.3.元组的元素是不可变的
    • 2.4.当元组中的元素是一个列表时列表中的元素可变
    • 2.5.当元组中只定义一个元素时的注意事项
  • 3.列表的所有操作同样适用于元组
  • 4.就是想修改元组中的某个元素

1.元组的概念

Python中的元组和列表很相似,元组也是Python语言提供的内置数据结构之一,可以在代码中直接使用。

元组和列表就像是一个孪生兄弟,表现形式和使用上都大差不差,但是两者又有非常明显的区别:

  • 元组是用小括号表示的,列表的小括号还可以直接省略,而列表是使用中括号表示的,列表的中括号必须存在。
  • 元组的对象是不可变类型的,也就是说,一旦定义了元组,元组中的数据时不能进行更改的。
  • 列表中的对象是可变类型的,定义了列表之后,可以对列表中的数据进行增删改。

一个元组中也会定义很多个数据元素,每个数据元素也都可以通过索引的方式获取,也有正数、负数索引一说。

当一个元组中的数据元素是一个列表时,对于元素是不允许修改的,但是元素中列表的数据时可以被修改的,有种多维列表的概念,这个列表在元组中相当于一个子列表,这种情况在下面的操作中会进行演示。

问题来了,既然元组和列表那么的相似,为什么还要设计元组这种数据结构呢?

其实也并不难理解,元组的对象是不可变类型的,一旦创建了元组这种不可变类型的对象,对象中的所有数据将不能修改,也能够避免由于修改数据从而引发的Bug错误,此外,对于不可变类型的对象值,在多并发的环境下是不需要加锁的,因为它的数据不可能会被改变,因此多并发的时候就不需要加锁,从而避免并发1修改了数据并发2依旧是旧数据。

因此在程序中我们也要尽量使用不可变类型的对象。

当元组中存在一个列表对象时,为什么列表中的元素可以被修改?不是说元组的对象是不可变类型吗?

因为一个元组中有很多个元素,列表呢只属于其中的一个元素,对应一个索引,对于元组而言存储的是引用元素所在内存中的地址,存储引用的内存地址是不会被改变的,也就意味着元组中的元素定义好之后,不能再添加、删除元组中的对象元素,但是列表只是元组中的一个元素,即使修改列表的数据也不会对元组中的对象元素有改动,根据列表的特点以及列表有自己的数据结构,就可以对元组中元素为列表的对象进行修改。

2.元组的基本使用

在前面说了那么多的理论,例如元组用小括号表示,元组的特性等等,在本小结,我们通过案例来是验证。

2.1.定义一个元组

元组用小括号定义。

#定义一个元组
mytuple = ("jiangxl", 123, "python")
print(mytuple)

#输出结果:('jiangxl', 123, 'python')

定义元组时小括号可以省略。

mytuple = "jiangxl", 123, "python"
print(mytuple)

#输出结果:('jiangxl', 123, 'python')

2.2.定义一个空元组

可以使用()表示一个空元组,也可以使用tuple()函数定义一个空元组

mytuple = ()
print(mytuple)

print(tuple())

2.3.元组的元素是不可变的

元组中的对象元素是不可变的,已定义好的元组,其中的元素是不能被修改的,如下所示:

mytuple = ("jiangxl", 123, "python")

#尝试修改索引为1的元素
mytuple[1] = 678

直接回抛出错误:TypeError: ‘tuple’ object does not support item assignment

2.4.当元组中的元素是一个列表时列表中的元素可变

当一个元组中的元素是一个列表时,这个列表相当于元组的一个元素,面向一个索引,此时这个列表相当于多维列表中子列表的概念,有自己的索引分布,因此当元组中的元素是列表时,这个列表中的元素可以改变。

元组会存储元素在内存中的地址,这个地址是不能被修改的,因此可以保证元素在元组中不会改变,但是列表是元组中的一个元素,这个元素对象不变就可以,至于元素中的元素就受列表的特性控制了。

#定义一个元组,其中索引1对应的元素是[1, 2, 3]列表
mytuple2 = ("jiangxl", [1, 2, 3], "python")

#修改[1, 2, 3]列表中1元素为123
'''
    首先找到[1, 2, 3]列表所在元组中的元素对应的索引:mytuple2[1]
    然后在找到元素1对应在列表中的索引:mytuple2[1][0]
'''
mytuple2[1][0] = 123

#打印元组的内容观察是否被修改
print(mytuple2)

#输出结果:('jiangxl', [123, 2, 3], 'python')

2.5.当元组中只定义一个元素时的注意事项

当在元素中只定义一个元素时,有一些注意事项,即使是只定义一个元素,也要在元组中至少包含一个逗号,否则Python就认为我们定义的并非是元组,只是一个字符串。

1)定义元组中只有一个元素且不加逗号

当定义的元组中只有一个元素时,并且没有加逗号,此时Python认为这并不是一个元组,只是一个字符串,()括号也被认为是数学中的括号。

#元组中只有一个元素,且不添加逗号
mytuple = ("jiangxl")

#打印这个元组中的元素
print(mytuple)
#输出结果:jiangxl

#竟然只输出了一个字符串,并不是元组的形式,我们打印这个数据的类型
print(type(mytuple))
#输出结果:<class 'str'>
#发现只是一个字符串类型,并不是元组

2)定义元组中只有一个元素且加逗号

在元组()中只要有一个逗号,Python就认为这是一个元组。

mytuple = ("jiangxl",)

3.列表的所有操作同样适用于元组

元组和列表很类似,几乎一样,只不过元组是不可变的类型,列表能实现的操作,也同样适用于元组。

理论就不再叙说了,不明白的去看前面列表这类操作的理论,说的非常明白了。

1)元组的切片

#元组的切片
mytuple = ("jiangxl", 123, "python", 111, 22, 45, "abc")
print(mytuple[1:4])                 

#输出结果; (123, 'python', 111)

2)查询元组中某个元素的索引

#查询元组中某个元素的索引
mytuple = ("jiangxl", 123, "python", 111, 22, 45, "abc")
print(mytuple.index(123))           

#输出结果;1

3)使用乘法运算符操作列表

#使用乘法运算符操作列表
mytuple = ("jiangxl", 123, "python", 111, 22, 45, "abc")
mytuple2 = mytuple * 2
print(mytuple2)     

#输出结果:('jiangxl', 123, 'python', 111, 22, 45, 'abc', 'jiangxl', 123, 'python', 111, 22, 45, 'abc')

4)使用加法运算符操作列表

#使用加法运算符操作列表
mytuple3 = ("abc", "k8s", "jenkins")
mytuple4 = (123, 456, 789, 111)
print(mytuple3 + mytuple4)         

#输出结果:('abc', 'k8s', 'jenkins', 123, 456, 789, 111)

5)元组之间的比较

元组的比较也是基于元组中的所有元素都是数字的情况下,才能进行比较。

#元组的比较
mytuple5 = (1, 2, 3, 4)
mytuple6 = (1, 2, 5, 8, 9)
print(mytuple5 < mytuple6)

#输出结果:True

6)元组的反转

元组是不可变的类型,不能通过方法reverse实现元组的反转,因为调用类方法会修改元组本身的元素,所以只能通过reversed函数实现反转。

mytuple = ("jiangxl", 123, "python", 111, 22, 45, "abc")
print(list(reversed(mytuple)))            

#输出结果:['abc', 45, 22, 111, 'python', 123, 'jiangxl']

7)元组的排序

元组是不可变的类型,不能通过方法sort实现元组排序,因为调用类方法会修改元组本身的元素,所以只能通过sorted函数实现排序。

元组进行排序时,如果元组中存在字符串类型的元素,那么其他所有的元素无论什么类型,都需要单独用引号引起来,否则不能排序,会抛出错误。

mytuple = (1, 2, 5, 8, 9)
##升序
print(sorted(mytuple))
#输出结果:[1, 2, 5, 8, 9]

##降序
print(sorted(mytuple, reverse=True))
#输出结果:[9, 8, 5, 2, 1]

4.就是想修改元组中的某个元素

元组的对象是不可变类型的,不允许增、删、改,但是我们就是想改元组的对象元素,也是有办法的。

  • 重新声明元组,对元素进行增删改
  • 使用切片截取元组中需要的元素,然后是还有加法运算符拼接新的对象元素。

第一种方法无需演示,懂得都会,重点看第二种方法。

这种方法的核心思想就是:利用切片(保留元组中想要的元素)+拼接(将多个切片的元组合并)的方式即可对元组中的元素改变。

需求:

​ (“jiangxl”, 123, “python”, 111, 22, 45, “abc”)

有一个元组,对象元素如上所示,我想删掉元组中的“22”和“45”这两个对象元素。

实现思路:

  • 我们都知道元组是不可变的类型,不允许修改其中的元素,但是我们就要反其道而行之,运用所学的知识实现这个需求。
  • 想删掉元组中的“22”和“45”这两个对象元素,可以使用切片的方式将这两个元素之外的元素从列表中切出来。
  • 由于这两个元素前后都有其他元素,一个切片截取22元素之前的其他元素,一个切片截取45元素之后的其他元素。
  • 最后通过加法运算符将两个切片合并在一起,形成一个新的元组,此时这个元组中就不包含22”和“45”这两个对象元素。通过切片+拼接的方法就可以将元组中的元素进行删除操作,如果是修改也是同样的方法:切片+拼接。

代码如下:

#定义初始元组
'''
    定义好初始元组后,突然想修改元组中的元素了,但是又不想去调整初始元组,故而通过切片+拼接的方法产生一个新的元组,也就相当于对元组的元素进行改变了。
    需求:删掉元组中的“22”和“45”这两个对象元素
'''
mytuple = ("jiangxl", 123, "python", 111, 22, 45, "abc")

'''
    使用切片截取22元素之前的其他元素,无需指定起始索引,从第一个元素处开始截取,指定结束索引为4
    索引4是元素22的索引,指定结束元素是4,结束元素不会被纳入切片
'''
mytuplestart = mytuple[:4]

'''
    22元素之前的全部元素都截取出来后,还要对45之后的元素进行截取,因为我们只是不想要22和45了,45之后还有其他的元素
    指定开始索引为6,索引为6的元素是abc,完美避开了22和45这两个元素,不指定结束索引,一直切片到最后一个元素
'''
mytuolestop = mytuple[6:]

'''
    使用加法运算符将两个切片拼接在一起,形成新的元组
'''
mytuplenew = mytuplestart + mytuolestop
print(mytuplenew)

#输出结果:('jiangxl', 123, 'python', 111, 'abc')

到此这篇关于Python中元组的概念以及应用的文章就介绍到这了,更多相关Python中元组概念内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python 元组的使用方法

    元组--tuple 列表非常适合用于存储在程序运行期间可能变化的数据集. 列表是可以修改的,但元组是不可修改的 Python将不能修改的值称为不可变的,而不可变的列表被称为元组 1. 元组的创建和删除 (1)使用赋值运算符直接创建元组 语法: tuplename = (element1, element2, element3, ....) ​在Python中,元组使用一对小括号将所有的元素括起来,但是小括号不是必须的,只要将一组值用逗号分隔开,Python就可以使其为元组. verse = "渔

  • Python使用list列表和tuple元组的方法

    list: Python内置的一种数据类型是列表:list.list是一种有序的集合,可以随时添加和删除其中的元素. 比如,列出寝室所有室友的名字,就可以用一个list表示: roomie = ['xzl','xsy','pp'] len(roomie) 用len()函数可以获得list元素的个数: 用索引来访问list中每一个位置的元素,记得索引和数组一样是从0开始的: 当索引超出了范围时,Python会报一个IndexError错误,所以,要确保索引不要越界. 值得注意的是:如果要取最后一个

  • python中的列表和元组实例详解

    python中的列表和元组 # 1.列表的格式 # [数据1,数据2,数据3,···] # 列表 可变数据类型 # 列表可以存储多个数据,数据之间的逗号以英文逗号分隔 # 列表可以存储不同类型数据,但一般存储同一数据类型,这样便于操作 # list_name = [] # 定义了一个空的列表 # 定义了一个有数据的列表 # 可以去索引和切片 print('1.列表的格式') list_name = ['小明', '小刚', '小芳'] print(list_name[0]) # 小明 print

  • Python元组的定义及使用

    目录 1.前言 2.定义和使用元组 2.1 定义 2.2 使用 3.元组的应用场景 3.1 打包和解包 3.2 交换两个变量的值 3.3 让函数返回多个值 1.前言 在Python中元组是一个和列表非常类似的数据类型,不同之处就是列表中的元素可以修改,而元组之中的元素不可以修改. 2.定义和使用元组 2.1 定义 定义元素通常使用小括号()字面量语法,示例代码如下: tuple1 = ("Hello", "一碗周", "你好") print(ty

  • Python学习之列表和元组的使用详解

    目录 列表和元组简介 列表学习要点 列表的声明语法 列表的读取 列表操作 列表元素的修改和删除 列表元素合并 列表元素顺序变化 元组学习要点 元组基本知识 元组的基本操作 列表和元组简介 如果说在 Python 语言中找一个最优秀的数据类型,那无疑是列表,如果要在推荐一个,那我选择元组,本篇博客我们的重心会放在列表上,元组可以看成不能被修改的列表,所以作为赠品 进行学习即可. 列表是一种非常灵活的数据结构,可以弥补前文字符串类型的很多不足. 正式学习前,还需要记住两个英文单词,列表(list),

  • Python元组 tuple的概念与基本操作详解【定义、创建、访问、计数、推导式等】

    本文实例讲述了Python元组 tuple的概念与基本操作.分享给大家供大家参考,具体如下: 元组 tuple 元组 tuple的定义 元组的创建 元组的元素访问和计数 1. 元组的元素不能修改 2. 元组的元素访问和列表一样,只不过返回的仍然是元组对象. 3. 列表关于排序的方法 list.sorted()是修改原列表对象,元组没有该方法.如果要对元组排 zip 生成器推导式创建元组 元组总结 元组 tuple的定义 列表属于可变序列,可以任意修改列表中的元素.元组属于不可变序列,不能修改元组

  • 初步讲解Python中的元组概念

    元组是不可变的Python对象序列.元组的序列就像列表.唯一的区别是,元组不能被改变,即元组是不可被修改.元组使用小括号,而列表使用方括号. 创建一个元组很简单,只要把不同的逗号分隔值,可以把括号中的这些逗号来分隔每个值.例如: tup1 = ('physics', 'chemistry', 1997, 2000); tup2 = (1, 2, 3, 4, 5 ); tup3 = "a", "b", "c", "d"; 空的元

  • python元组的概念知识点

    元组(tuple)与列表类似,但是元组是不可修改的 (immutable).也就是说,元组一旦被创建就不可被修改了.操作符 (in.+.*)和内置函数(len.max.min)对于元组的使用效果和列表是一样的,因为这几个操作都不会修改元组的元素.索引和切片的用 法在获取部分元素或切片时和列表是一样的效果,但是不能用来添加. 移除.替换元素.元组的方法也只有两个,即count和index.元组的 重要用途之一就是用作字典的键.如果不需要修改元素,那么使用元组 的效率会比列表更高. () (1,)

  • Python基础数据类型tuple元组的概念与用法

    目录 元组简单介绍 声明元组 元组与列表的区别 特殊的元组 元组的简写 元组常见运算操作 索引 [ ] 取值 切片 [ : : ] 取值 运算符 + 运算符 * 关键字 in 常见函数 max(元组) 函数 min(元组) 函数 元组常见方法 index(item) count(value) 元组总结 元组简单介绍 元组是一个和列表和相似的数据类型,也是一个有序序列 两者拥有着基本相同的特性,但是也有很多不同的地方 声明元组 var = (1, 2, 3) var = ("1", &q

  • Python中元组的概念及应用小结

    目录 1.元组的概念 2.元组的基本使用 2.1.定义一个元组 2.2.定义一个空元组 2.3.元组的元素是不可变的 2.4.当元组中的元素是一个列表时列表中的元素可变 2.5.当元组中只定义一个元素时的注意事项 3.列表的所有操作同样适用于元组 4.就是想修改元组中的某个元素 1.元组的概念 Python中的元组和列表很相似,元组也是Python语言提供的内置数据结构之一,可以在代码中直接使用. 元组和列表就像是一个孪生兄弟,表现形式和使用上都大差不差,但是两者又有非常明显的区别: 元组是用小

  • Python中re模块的元字符使用小结

    目录 类别1:匹配单个字符的元字符 方括号( [] ) 字符集 点 ( . ) 通配符 \w 和 \W 单词字符匹配 \d 和 \D 字符十进制数字匹配 \s 和 \S 字符空格匹配 混合使用 \w, \W, \d, \D, \s, 和\S 类别2:转义元字符 反斜杠 ( \ ) 转义元字符 类别3:锚点 $ 和\Z 字符串的结尾匹配项 \b 和 \B 单词匹配 类别4:量词 * 匹配前面的子表达式零次或多次 + 匹配前面的子表达式一次或多次 ? 匹配前面的子表达式零次或一次 .*?.+?.??

  • Python中元组,列表,字典的区别

    Python中,有3种内建的数据结构:列表.元组和字典. 1.列表 list是处理一组有序项目的数据结构,即你可以在一个列表中存储一个序列的项目.列表中的项目.列表中的项目应该包括在方括号中,这样python就知道你是在指明一个列表.一旦你创建了一个列表,你就可以添加,删除,或者是搜索列表中的项目.由于你可以增加或删除项目,我们说列表是可变的数据类型,即这种类型是可以被改变的,并且列表是可以嵌套的. 实例: #coding=utf-8 animalslist=['fox','tiger','ra

  • python中元组的用法整理

    元组:tuple 内部只有两个可以操作的函数[count()/index()],一个是查看一个数据在元组中出现的总数另一个是查看. 一个数据在元组中的位置,外部有一个默认的函数sorted可以针对元组进行排序,排序注意:使用系统默认排序,但是必须保证排序的数据他们的数据类型是一致的!与元组查询相关函数,可以直接操作,如:len()查看元组中元素的个数. 声明元组方式 Name = tuple() name = ("1","2","3") name

  • python中判断集合范围的方法小结

    我们在比较数值大小的时候,会使用一些比较符号来进行判断.在python集合中也有这样的比较,但有一点要注意的是,我们比较的是集合之间的包容性,而不是简单数值之间的大小比较,这点在文章的开头就进行明确,也是对于我们python初学者的提醒. 集合可以使用大于(>).小于(<).大于等于(>=).小于等于(<=).等于(==).不等于(!=)来判断某个集合是否完全包含于另一个集合,也可以使用子父集判断函数. 定义三个集合s1,s2,s3: >>> s1=set([1,

  • Python中元组的基础介绍及常用操作总结

    目录 1.元组的介绍 2.访问元组 3.修改元组(不可以修改的) 4.元组的内置函数有count,index 5.类型转换 1.将元组转换为列表 2.将元组转换为集合 1.元组的介绍 Python的元组与列表类似,不同之处在于元组的元素不能修改. 元组使用小括号,列表使用方括号. 元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可. 元组的格式: tup=('a','b','c','d') 2.访问元组 元组可以使用下标索引来访问元组中的值,下标索引从0开始 例如: tup=('a','

  • Python中关于面向对象概念的详细讲解

    面向对象编程的2个非常重要的概念: 类和对象 对象是面向对象编程的核心,在使用对象的过程中,为了将具有共同特征和行为的一组对象抽象定义,提出了另外一个新的概念--类. 类用来描述具有相同的属性和方法的对象的集合.它定义了该集合中每个对象所共有的属性和方法.对象是类的实例. 类是由三部分构成: 类的名称 类的属性 类的方法 格式如下: # 类名 class Func(object): # 类的属性 i=123 # 类的方法 def f(self): print('6666') # 实例化类 a=F

  • 详解Python中元组的三个不常用特性

    目录 1. 引言 2. 举个栗子 3. 创建包含单一元素的元组 4. 使用下划线和*来unpack元组 5. 使用命名元组 6. 总结 1. 引言 元组是Python中一种重要的内置数据类型.与列表一样,我们经常使用元组将多个对象保存为相应的数据容器.然而,与列表不同的是元组的不变性——一个不可改变的数据序列. 2. 举个栗子 下面的代码片段向我们展示了元组的一些常见用法. response = (404, "Can't access website") response_code =

  • Python中的一些陷阱与技巧小结

    Python是一种被广泛使用的强大语言,让我们深入这种语言,并且学习一些控制语句的技巧,标准库的窍门和一些常见的陷阱. Python(和它的各种库)非常庞大.它被用于系统自动化.web应用.大数据.数据分析及安全软件.这篇文件旨在展示一些知之甚少的技巧,这些技巧将带领你走上一条开发速度更快.调试更容易并且充满趣味的道路. 学习Python和学习所有其他语言一样,真正有用的资源不是各个语言繁琐的超大官方文档,而是使用常用语法.库和Python社区共享知识的能力. 探索标准数据类型 谦逊的enume

  • Python中字典的基础知识归纳小结

    定义一个字典 >>> d = {"server":"mpilgrim", "database":"master"} 1 >>> d {'server': 'mpilgrim', 'database': 'master'} >>> d["server"] 2 'mpilgrim' >>> d["database"] 3

随机推荐