热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python3元组_Python|5分钟搞定Python3元组

简介Python3中元组表现为如下形式:元组(tuple)是一种静态的(immutable)或者说是不可变(unchangeable)的数据结构,里面的

简介

Python3 中元组表现为如下形式:

元组(tuple)是一种静态的(immutable)或者说是不可变(unchangeable)的数据结构,里面的元素按照一定的顺序排列。它是静态的,所以元组里的元素不能被修改。

元组用于给数据分组。元组中的每一个元素称之为“项”(item)。

元组中的值被包装在括号中,并用逗号分隔,空元组可以写成coral=(),不过只有一项元素的元组必须使用逗号:coral = ("blue coral",)。

如果使用print()函数打印元组,会得到如下的输出,其中元组依然‘()’用括号包裹。

当你试图理解Python中的元组或者其他集合类型的数据结构时,去想一下电脑中存在的不同集合是有帮助的:不同类型文件的排列,你的歌曲清单,浏览器中的书签,你的邮箱,你在流媒体上获得的视频集合等等。

元组和列表很像,不过元组中的值是不可修改的。也正因为如此,当你在代码中使用元组时,就意味着告诉他人你不想集合中的数据被修改。同时,因为元组中的值不可变,因此相比于使用列表,你的代码能通过使用元组得到优化。

元组的索引

作为一个有序的元素集合,元组中的任一项都可以通过索引被单独访问。

每一项都与一个索引号相关联,它是一个整数值,从0开始计数。

对于coral元组,它的索引如下所示:

元组中的第一项,字符串“blue coral”的索引是0,元组的最后一个元素是“elkhorn coral”,索引号是3。

因为元组中的每一项都有一个对应的索引号,因此我们可以单独地访问每一个元素。

现在我们通过索引号单独访问某个元素:

如上表所示,索引号的范围是0~3,所以我们可以通过索引号去访问其中的每个元素:

如果我们访问此元组时使用一个超过3的索引号,它会提示说索引号越界。

索引号除了可以是正数,还可以是负数形式,它是从后往前倒着数地,从-1开始。

当我们去具体访问一个长元组的最后几项时,负数形式的索引号很有效。

还是针对coral元组,它的负数形式的索引号如下:

所以如果你想通过负数形式的索引打印出“blue coral”这一项,可以写成如下形式:

我们还可以通过‘+’操作符来将元组中的字符串值和另一个字符串连接:

我们把索引号为1的元素的值和字符串“This reef is made up of”组合在一起。我们也可以使用‘+’来连接两个或者多个元组。

元组中的每一项都有对应的索引号,我们可以很容易地去访问元组中的每一个元素。

元组的切片

我们使用索引号去访问元组中的某一项。切片(slice)通过构造一个索引号的范围[x:y]可以同时获得元组中的多个值。

假设我们想获取coral元组中间的值,可以用如下方式构造一个切片。

当我们在构造[1:3]这个切片时,第一个表示切片开始的地方(包含此索引号),第二个数表示切片结束的地方(不包括此索引号),因此[1:3]能够取出索引号为1和2的元素。

如果你想得到除了端点元素的剩余所有元素,你可以在[x:y]中忽略某一项。

如你想打印出coral元组中的前三个元素,你可以写成如下形式:

这就打印出元组中前面部分的信息,在索引号为3的元素之前停止。

为了打印出元组后面部分的信息,可以忽略掉[x:y]中y的值:

我们也可以使用负数形式的索引号构造切片来访问元组:

切片中的最后一个变量是步长(stride),它是指当我们取出前一项时,移动多少个元素去取下一个值。

前面的几个例子,我们都忽略了这一变量,使用默认值1。因此我们能够取得两个索引号中间的所有元素。

完整的切片构造方式[x:y:z],z是指步长。我们来构造一个长一点的元组,通过步长为2的切片去访问它:

我们构造的切片[1:11:2]打印出从索引号为1(包括此索引号),到索引号为11(不包括此索引号)的值,步长为2告诉我们隔一项打印一个。

我们可以忽略切片中的前两项,只使用步长变量:

通过把切片中的步长设置为3,每个索引号能够被3整除的元素打印出来:

0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12

通过使用正数或者负数形式的切片,并设置步长,我们可以更加有针对性地获取元组中的值。

元组的连接和复制

操作符可以被用来连接或者复制元组。连接是通过‘+’来完成,复制是‘*’来完成。

‘+’可以将两个或者多个元组连接在一起。我们可以把两个元组中的值合并得到一个新的元组。

输出结果为:

因为‘+’操作符可以用来连接,所以可以被用来将多个元组合并成一个新的元组,尽管如此,我们还是不能改变某一个已存在的元组。

‘*’操作符可以用来复制元组,也许你需要将某一目录下的文件全部拷贝到服务器上,或者你想和朋友分享一下播放列表,在这些情况下,你需要复制数据的集合。

让我们把coral元组乘以2,kelp元组乘以3,来创建新的元组。

通过‘*’操作符,我们可以将元组复制指定的次数,通过原有的数据序列去制造新的元组。

现有的元组可以通过‘+’或者‘*’来进行连接或者复制操作。

元组的函数

你可以使用一些内建函数来操作元组。

len()

类似于字符串和列表,我们可以通过len()函数计算元组的长度,把元组作为参数传递进去:

当你想得到不同集合长度的最大或最小值时,这个函数非常有用。

当对kelp元组和numbers使用len函数时,我们会得到如下输出:

我们得到上述输出是因为kelp有四个元素,numbers有13个元素:

上述实例中元组的长度比较小,当元组较长时len()可以得到元素的具体数量。

max()和min()

当我们处理数值型的元组时(包括整数和浮点数),我们可以使用max()和min()函数去找到某一特定元组中的最大值和最小值。

这两个函数让我们能够得到定量数据的相关信息,如考试成绩,温度,价格等。

看一下由浮点数组成的元组:

为了使用max()函数,需要把元组传递进函数,max(more_numbers)。

max()函数能够得到元组中的最大值。

同样地,我们也可以使用min()函数得到最小值。

如此我们就能找到并打印出元组中的最小值。

和len()函数一样,当元组中的数据项较多时,max()和min()是很有用的。

元组和列表的不同之处

元组和列表的首要不同之处就是元组中的值不可修改的。这意味着不能在元组中添加或者删除值,某一数据项的值也不能修改。

不过,我们可以通过‘+’等操作符来构造新元组。

让我们再一次操作coral元组,我们想要把数据项‘blue coral’替换成‘black coral’。如果你试图像操作列表那样去操作元组:

它会报错。

这是因为元组的值是不能修改的。

如果构造完一个元组,而后你才发现真正需要的是列表形式,我们可以将其进行转换。

为了把元组转换成列表,我们可以使用list()函数。

现在我们就把元组转换成用[]包裹的列表了。

同样地,你可以使用tuple()函数将列表转换为元组。

你可以在“在Python3如何转换数据”学到更多相关知识。

总结

元组是一种有序的数据类型,它不能被修改,因其运行速度比列表快,所以使用元组的代码会有一定的优化。当你和其他人共同合作编写代码时,使用元组类型意味着你不想自己的数据序列被修改。

这篇导论阐述了元组的基本特性,包括索引,切片和拼接,同时也介绍了针对元组的内建函数。



推荐阅读
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 本文介绍了在Python3中如何使用选择文件对话框的格式打开和保存图片的方法。通过使用tkinter库中的filedialog模块的asksaveasfilename和askopenfilename函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了使用PHP实现断点续传乱序合并文件的方法和源码。由于网络原因,文件需要分割成多个部分发送,因此无法按顺序接收。文章中提供了merge2.php的源码,通过使用shuffle函数打乱文件读取顺序,实现了乱序合并文件的功能。同时,还介绍了filesize、glob、unlink、fopen等相关函数的使用。阅读本文可以了解如何使用PHP实现断点续传乱序合并文件的具体步骤。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 本文介绍了Python对Excel文件的读取方法,包括模块的安装和使用。通过安装xlrd、xlwt、xlutils、pyExcelerator等模块,可以实现对Excel文件的读取和处理。具体的读取方法包括打开excel文件、抓取所有sheet的名称、定位到指定的表单等。本文提供了两种定位表单的方式,并给出了相应的代码示例。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • 本文介绍了PhysioNet网站提供的生理信号处理工具箱WFDB Toolbox for Matlab的安装和使用方法。通过下载并添加到Matlab路径中或直接在Matlab中输入相关内容,即可完成安装。该工具箱提供了一系列函数,可以方便地处理生理信号数据。详细的安装和使用方法可以参考本文内容。 ... [详细]
author-avatar
i1L3i1L4
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有