【Python】元组(tuple)详解

这篇具有很好参考价值的文章主要介绍了【Python】元组(tuple)详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

元组概念

元组(tuple)是 Python 中另一个重要的序列结构,和列表类似,元组也是由一系列按特定顺序排序的元素组成。
元组也可以看做是不可变的列表,通常情况下,元组用于保存无需修改的内容。
从形式上看,元组的所有元素都放在一对小括号( )中,相邻元素之间用逗号,分隔,如下所示:

(element1, element2, ... , elementn)

从存储内容上看,元组可以存储整数、实数、字符串、列表、元组等任何类型的数据,并且在同一个元组中,元素的类型可以不同,例如:

("c.biancheng.net", 1, [2,'a'], ("abc",3.0))

在这个元组中,有多种类型的数据,包括整形、字符串、列表、元组。
另外,我们都知道,列表的数据类型是 list,那么元组的数据类型是什么呢?我们不妨通过 type() 函数来查看一下:

type( ("c.biancheng.net",1,[2,'a'],("abc",3.0)) )
<class 'tuple'>

可以看到,元组是 tuple 类型,这也是很多教程中用 tuple 指代元组的原因。

Python创建元组

使用 ( ) 直接创建

通过( )创建元组后,一般使用=将它赋值给某个变量,具体格式为:

tuplename = (element1, element2, ..., elementn)

其中,tuplename 表示变量名,element1 ~ elementn 表示元组的元素。

num = (7, 14, 21, 28, 35)
course = ("Python 教程", "http://c.biancheng.net/python/")
abc = ( "Python", 19, [1,2], ('c',2.0) )

在 Python 中,元组通常都是使用一对小括号将所有元素包围起来的,但小括号不是必须的,只要将各元素用逗号隔开,Python 就会将其视为元组,请看下面的例子:

course = "Python 教程", "http://c.biancheng.net/python/"
print(course)

运行结果为:

('Python 教程', 'http://c.biancheng.net/python/')

需要注意的一点是,当创建的元组中只有一个字符串类型的元素时,该元素后面必须要加一个逗号,,否则Python 解释器会将它视为字符串。

#最后加上逗号
a =("http://c.biancheng.net/cplus/",)
print(type(a))
print(a)

#最后不加逗号
b = ("http://c.biancheng.net/socket/")
print(type(b))
print(b

运行结果为:

<class 'tuple'>
('http://c.biancheng.net/cplus/',)
<class 'str'>
http://c.biancheng.net/socket/

你看,只有变量 a 才是元组,后面的变量 b 是一个字符串。

使用 tuple()函数创建元组

除了使用( )创建元组外,Python 还提供了一个内置的函数 tuple(),用来将其它数据类型转换为元组类型。tuple() 的语法格式如下:

tuple(data)

其中,data 表示可以转化为元组的数据,包括字符串、元组、range 对象等。

#将字符串转换成元组
2. tup1 = tuple("hello")
3. print(tup1)
4.
5. #将列表转换成元组
6. list1 = ['Python', 'Java', 'C++', 'JavaScript']
7. tup2 = tuple(list1)
8. print(tup2)
9.
10. #将字典转换成元组
11. dict1 = {'a':100, 'b':42, 'c':9}
12. tup3 = tuple(dict1)
13. print(tup3)
14.
15. #将区间转换成元组
16. range1 = range(1, 6)
17. tup4 = tuple(range1)
18. print(tup4)
19.
20. #创建空元组
21. print(tuple())

运行结果为:

('h', 'e', 'l', 'l', 'o')
('Python', 'Java', 'C++', 'JavaScript')
('a', 'b', 'c')
(1, 2, 3, 4, 5)
()

Python 访问元组元素

和列表一样,我们可以使用索引(Index)访问元组中的某个元素(得到的是一个元素的值),也可以使用切片访问元组中的一组元素(得到的是一个新的子元组)。使用索引访问元组元素的格式为:

tuplename[i]

其中,tuplename 表示元组名字,i 表示索引值。元组的索引可以是正数,也可以是负数。使用切片访问元组元素的格式为:

tuplename[start : end : step]

其中,start 表示起始索引,end 表示结束索引,step 表示步长。

1. url = tuple("http://c.biancheng.net/shell/")
2.
3. #使用索引访问元组中的某个元素
4. print(url[3]) #使用正数索引
5. print(url[-4]) #使用负数索引
6.
7. #使用切片访问元组中的一组元素
8. print(url[9: 18]) #使用正数切片
9. print(url[9: 18: 3]) #指定步长
10. print(url[-6: -1]) #使用负数切片

运行结果:

p
e
('b', 'i', 'a', 'n', 'c', 'h', 'e', 'n', 'g')
('b', 'n', 'e')
('s', 'h', 'e', 'l', 'l')

Python 修改元组

元组是不可变序列,元组中的元素不能被修改,所以我们只能创建一个新的元组去替代旧的元组。
例如,对元组变量进行重新赋值:

1. tup = (100, 0.5, -36, 73)
2. print(tup)
3. #对元组进行重新赋值
4. tup = ('Shell 脚本',"http://c.biancheng.net/shell/")
5. print(tup)

运行结果为:

(100, 0.5, -36, 73)
('Shell 脚本', 'http://c.biancheng.net/shell/')

另外,还可以通过连接多个元组(使用+可以拼接元组)的方式向元组中添加新元素,例如:

1. tup1 = (100, 0.5, -36, 73)
2. tup2 = (3+12j, -54.6, 99)
3. print(tup1+tup2)
4. print(tup1)
5. print(tup2)

运行结果为:

(100, 0.5, -36, 73, (3+12j), -54.6, 99)
(100, 0.5, -36, 73)
((3+12j), -54.6, 99)

你看,使用+拼接元组以后,tup1 和 tup2 的内容没法发生改变,这说明生成的是一个新的元组。

Python 删除元组

当创建的元组不再使用时,可以通过 del 关键字将其删除,例如:

1. tup = ('Java 教程',"http://c.biancheng.net/java/")
2. print(tup)
3. del tup
4. print(tup)

运行结果为:

('Java 教程', 'http://c.biancheng.net/java/')
Traceback (most recent call last):
File "C:\Users\mozhiyan\Desktop\demo.py", line 4, in <module>
print(tup)
NameError: name 'tup' is not defined

Python 自带垃圾回收功能,会自动销毁不用的元组,所以一般不需要通过 del 来手动删除。

元组和列表的区别

元组和列表(list)的不同之处在于:

列表的元素是可以更改的,包括修改元素值,删除和插入元素,所以列表是可变序列;
而元组一旦被创建,它的元素就不可更改了,所以元组是不可变序列。

元组和列表最大的区别就是,列表中的元素可以进行任意修改,就好比是用铅笔在纸上写的字,写错了还可以擦除重写;而元组中的元素无法修改,除非将元组整体替换掉,就好比是用圆珠笔写的字,写了就擦不掉了,除非换一张纸。
可以理解为,tuple 元组是一个只读版本的 list 列表。需要注意的是,这样的差异势必会影响两者的存储方式,我们来直接看下面的例子:

>>> listdemo = []
>>> listdemo.__sizeof__()
40
>>> tupleDemo = ()
>>> tupleDemo.__sizeof__()
24

可以看到,对于列表和元组来说,虽然它们都是空的,但元组却比列表少占用 16 个字节,这是为什么呢?
事实上,就是由于列表是动态的,它需要存储指针来指向对应的元素(占用 8 个字节)。另外,由于列表中元素可变,所以需要额外存储已经分配的长度大小(占用 8 个字节)。但是对于元组,情况就不同了,元组长度大小固定,且存储元素不可变,所以存储空间也是固定的。
既然列表这么强大,还要元组这种序列类型干什么?
通过对比列表和元组存储方式的差异,我们可以引申出这样的结论,即元组要比列表更加轻量级,所以从总体上来说,元组的性能速度要优于列表。
另外,Python 会在后台,对静态数据做一些资源缓存。通常来说,因为垃圾回收机制的存在,如果一些变量不
被使用了,Python 就会回收它们所占用的内存,返还给操作系统,以便其他变量或其他应用使用。
但是对于一些静态变量(比如元组),如果它不被使用并且占用空间不大时,Python 会暂时缓存这部分内存。
这样的话,当下次再创建同样大小的元组时,Python 就可以不用再向操作系统发出请求去寻找内存,而是可以直接分配之前缓存的内存空间,这样就能大大加快程序的运行速度。
当然,如果你想要增加、删减或者改变元素,那么列表显然更优。因为对于元组来说,必须得通过新建一个元组来完成。
总的来说,元组确实没有列表那么多功能,但是元组依旧是很重要的序列类型之一,元组的不可替代性体现在
以下这些场景中:文章来源地址https://www.toymoban.com/news/detail-755499.html

  1. 元组作为很多内置函数和序列类型方法的返回值存在,也就是说,在使用某些函数或者方法时,它的返回值会
    元组类型,因此你必须对元组进行处理。
  2. 元组比列表的访问和处理速度更快,因此,当需要对指定元素进行访问,且不涉及修改元素的操作时,建议使
    用元组。
  3. 元组可以在映射(和集合的成员)中当做“键”使用,而列表不行

到了这里,关于【Python】元组(tuple)详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 一文掌握python常用的tuple(元组)操作

    目录 1. 元组的创建 2. 访问元组元素 3. 切片操作 4. 合并元组 5. 复制元组 6. 内置函数与方法 7. 元组拆分 8. 星号表达式在元组中的应用 9. 遍历元组 10. 元组的嵌套 11. 元组与条件判断和逻辑运算 12. 常见应用场景 13. 元组与枚举(Enum) 14. 元组推导式 15. 元组与匿名函数(Lambd

    2024年03月09日
    浏览(33)
  • Python学习笔记 - 探索元组Tuple的使用

    元组(Tuple)在Python中是一种不可变的数据结构,用于存储有序的元素。 本文详细探讨了Python元组的各个方面,包括基本操作和与其他数据结构的比较。 概述了元组的基础特性,例如不可变性、有序性和索引。通过多个实例详细解释了如何进行元组的创建和查询。 除此之外

    2024年02月07日
    浏览(42)
  • Python教程(10)——Python变量类型元组tuple的详细用法

    在Python中,元组(Tuple)是一种有序且不可变的数据类型。元组可以包含任意数量的元素,用逗号分隔,并用圆括号括起来。与列表(List)不同,元组的元素不能修改。元组与列表一样,可以通过索引访问其中的元素。 元组的不可变性意味着无法向元组中添加、删除或修改元

    2024年02月12日
    浏览(24)
  • Python:list列表与tuple元组的区别

    在Python中, List(列表) 和 Tuple(元组) 都是用于 存储一组有序元素的数据结构 ,但它们有一些关键的区别,包括可变性、性能、语法等方面。 用法: 用方括号[]表示。 支持增删改操作,是可变的。 适用于存储有序的、可变的元素集合。 示例: 用法: 用圆括号()表示。

    2024年01月18日
    浏览(65)
  • python元组tuple添加元素的两种方法

    方法一 :可以使用python内置的__add__()方法,使用该方法为python元组添加元素时,需要使用元组来对象来进行调用,然后将需要添加的元素,以元组的数据类型进行传递,该方法并需修改调用对象,而是以新的元组进行返回,具体可见下方的实例代码。 方法二 :将python的元组

    2024年02月12日
    浏览(26)
  • Python列表(list)、元组(tuple)和字典(dictionary)的区别

    目录 列表(list)  访问列表元素  更新和删除列表元素 元组(tuple) 元组的访问、更新、删除操作  字典(dictionary)  创建空字典 修改、删除字典 总结 列表(list)、元组(tuple)和字典(dictionary)都是序列,序列都是由索引和元素组成。遍历和访问都按照如下格式: 具

    2023年04月13日
    浏览(36)
  • 【python百炼成魔】python之元组详解

    学习元组还是离不开列表,如果你还没有研究过列表,可以点击跳转到之前的文章:【python百炼成魔】python之列表详解 学习完列表再回来看元组的内容,会对你学习元组有很大的帮助。 元组的英文tuple,这个单词需要记得很熟。 元组也是python的内置数据结构之一,是一个不

    2024年02月11日
    浏览(42)
  • Python—元组详解(超详细)

    元组(tuple)是 Python 编程语言中的一种数据类型。元组与列表类似,不同之处在于 元组是不可变的 ,一旦创建后就不能修改。 元组使用 圆括号 ()  来表示,其中每个元素之间用 逗号隔开 。例如: 元组可以通过 下标访问 其中的元素,下标从 0 开始。例如: 元组支持

    2024年02月15日
    浏览(26)
  • 08列表(list)与元组(tuple)

    [数据1,数据2,数据3,数据4,......] 列表可以存储多个数据,数据之间的逗号以英文分割而且可以数据是不同类型的数据,列表是可变数据类型。 空列表 list_data = [] 或者 list_data = list() 列表的创建 列表的作用是⼀次性存储多个数据,程序员可以对这些数据进行的操作有:增、删、

    2023年04月12日
    浏览(26)
  • C++11 新特性:tuple 元组

    std::tuple 是 C++11 中引入的一个非常强大的类型,它允许将多个类型不同的值,组合成单一对象。 std::tuple 非常适合用于那些需要返回多个值的场景,而且它的灵活性和通用性使得其成为现代 C++ 编程中不可或缺的一部分。下面,我们将探讨一下 std::tuple 的内部实现、使用场景

    2024年04月14日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包