pythontuple([1、2、3)_Python 进阶之路 (三) Tuple元组使用指南

比List更安全的数据类型

大家好,今天为大家介绍一种更为安全的Python内置数据类型:tuple(元组),以及它的基础用法

元组是什么

元组(tuple)是另一种有序的数据类型,与list比较类似。主要不同的一点是tuple被创建后就不能对其进行修改。所以,tuple与list不同,没有append(),pop(),insert()这些方法可以使用。获取元素的方法和list是一样的,可以通过索引来访问(也是从0开始的),只不过不能赋值成为其他的元素。

因为 tuple不可变,所以代码更安全。如果可以的话,我们尽量使用tuple代替list。

创建元组

# 定义一个空的tuple

t = ()

print(t)

Out:()

只有1个元素的元组在进行定义的时候,需要加一个逗号 , 来消除歧义,否则定义的就不是一个元组而是元素本身

t1 = (5)

t2 = (5, )

print(t1)

print(t2)

Out: 5

(5,)

tup4 = (1, 2, 3, 4, 5 ); # 创建时直接赋值

tup5 = "a", "b", "c", "d"; # 创建时直接赋值

print(tup4)

print(tup5)

Out:(1, 2, 3, 4, 5)

('a', 'b', 'c', 'd')

一旦创建完,比如tup4 和 tup5 这两个tuple不能变了,它也没有append(),insert()这样的方法。其他获取元素的方法和List是一样的,我们可以正常地使用tup4[0],tup5[-1],但不能赋值成另外的元素

访问元组

访问元组和List基本一样,我们可以用切片很容易的查看元组中的元素,这里不多说,看个小栗子:

tup4 = (1, 2, 3, 4, 5 );

tup5 = "a", "b", "c", "d";

print(tup4[0])

print(tup5[1:3])

print(tup5[::-1])

print(sorted(tup5,reverse=True)) # 使用sorted结果变成了List

Out: 1

('b', 'c')

('d', 'c', 'b', 'a')

['d', 'c', 'b', 'a']

理解元组的不可变

上面已经说过了,元组是不可变的,让我们来看下面这个小栗子:

test=('a','b',[1,2,3])

print(test)

test[2][0]=100

print(test)

Out: ('a', 'b', [1, 2, 3])

('a', 'b', [100, 2, 3])

不知道有没有朋友会有疑问? 你不是说元组不能变嘛,这里怎么回事,test元组的第三个元素是List,这里我们修改了List的值结果不是变了吗?

这里要给大家说明一下,tuple不可变指的是指向不变,也就是说test[2]永远指向List[1,2,3],这里是因为List可变,所以我们才能修改为[100,2,3],但是改变前后test[2]的指向没有发生任何变化,如果我们想要直接改变test[2]的值,就会发现如下错误

test[2]=[100,2,3]

Out: TypeError: 'tuple' object does not support item assignment

理解了“指向不变”后,如果我们需要创建一个内容也不变的tuple怎么做?那就必须保证tuple的每一个元素本身也不能变。

元组的连接

如前面所说,元组是不可改的,但是可以连接,我们可以使用 + 对元组进行连接:

t1 = (2,3,5)

t2 = ('ricequant','python')

t3 = t1 + t2

print(t3)

Out:(2, 3, 5, 'ricequant', 'python')

元组的删除

元组中的元素不能被删除,但是我们可以使用 del 删除整个元组,删除后可以重新定义,非常简单,不多说啦

person = ('xiaobai',18,'paris')

print(person)

del person

print(person)

Out: ('xiaobai', 18, 'paris')

NameError: name 'person' is not defined

元组的解包

这里是比较有意思的地方,假设我们有一个元组t如下:

t = ('foo', 'bar', 'baz', 'qux')

当我们创建 t 时,实际上就是一个打包,过程展示如下图:

那如果是解包呢? 换过来就行了呀

t = ('foo', 'bar', 'baz', 'qux')

(s1, s2, s3, s4) = t

print(s1,s2,s3,s4)

Out:foo bar baz qux

当我们执行(s1, s2, s3, s4) = t的时候,实际发生的情况如下:

这里注意一点,如果我们尝试解包一个元祖是传递的变量和元组实际元素数量不相符时会产生错误:

(s1, s2, s3) = t

ValueError: too many values to unpack (expected 3)

(s1, s2, s3, s4, s5) = t

ValueError: not enough values to unpack (expected 5, got 4)

元组的互换swap

其实Python里面还有一种非常简单的创建元组的方法,那就是逗号,我们如果用逗号分隔一些元素,会自动生成一个元组:

a = 'foo'

b = 'bar'

x= a, b

print(x)

Out:('foo', 'bar')

如果做一个简单的互换很容易,只要这样就可以了:

x= b,a

print(x)

Out:('bar', 'foo')

元组的常用方法汇总

tup.index(x, [start, [stop]])) 返回元组中start到stop索引中第一个值为 x的元素在整个列表中的索引。如果没有匹配的元素就会返回一个错误。

tup.count(x) 返回 x 在元组中出现的次数。

cmp(tuple1, tuple2) 比较元组中两个元素。

len(tuple) 计算元组元素个数。

max(tuple) 返回元组中元素最大值。

min(tuple) 返回元组中元素最小值。

tuple(seq) 将列表转换为元组。

元组不提供字符串、列表和字典中的方法。如果相对元组排序,通常先得将它转换为列表并使其成为一个可变对象,才能获得使用排序方法,或使用sorted内置方法。

总结

今天为大家讲解了我知道的有关tuple的一切,也为大家展示了一些常规操作,希望能够帮助到大家,马上就要到初五了,迎财神,吃饺子!!! 希望大家在2019大吉大利,大发横财!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/521717.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux 创建用户和修改新增用户默认的家目录

文章目录一、用户操作①创建新用户②给新用户设置密码③ 默认家目录二、修改默认家目录① 编辑passwd文件② 在下面找到新增的用户③ 把前面的目录(/home/gblfy)修改为(/app/gblfy)三、验证测试①切换用户②查看当前用户目录一、用户操作 ①创建新用户 useradd gblfy②给新用…

深度学习技巧与窍门

摘要: 本文是根据自身构建深度学习模型总结而来,适合有一定深度学习基础的读者阅读。本文是根据自身构建深度学习模型总结而来,可能读起来比较干巴,但干货确实不少。闲话少叙,直接进入相关内容。首先,为什么…

Python库大全(涵盖了Python应用的方方面面),建议收藏留用!

学Python,想必大家都是从爬虫开始的吧。毕竟网上类似的资源很丰富,开源项目也非常多。 Python学习网络爬虫主要分3个大的版块:抓取,分析,存储 当我们在浏览器中输入一个url后回车,后台会发生什么&#xff1…

java.io.IOException 权限不够

这几天修改了jenkins发布时启动java项目的用户。原先是root现在换成普通用户了,结果部署下来会报错 java.io.IOException: 权限不够 发现临时文件的创建目录是/tmp/poifiles,到服务器查看/tmp/poifiles这个文件的创建用户是root,java普通用户…

让我再撸一次HashMap

戳蓝字“CSDN云计算”关注我们哦!对于JAVA求职者来说,HashMap可谓是集合类的重中之重,甚至你在复习的时候,其他集合类都不用看,专攻HashMap即可。然而,鉴于网上大部分的关于HashMap的面试方向文章&#xff…

sklearn svm 调参_sklearn调参(验证曲线,可视化不同参数下交叉验证得分)

一 、 原始方法:思路:1. 参数从 0∞ 的一个 区间 取点, 方法如: np.logspace(-10, 0, 10) , np.logspace(-6, -1, 5)2. 循环调用cross_val_score计算得分。在SVM不同的惩罚参数C下的模型准确率。import matplotlib.pyp…

php json获取get请求,PHP简单的Curl的Get请求和Curl的Post请求和file_get_contents的Get请求获取接口JSON数据...

PHP携带Cookie用Curl进行Post或Get请求获取数据简单的curl请求(Get请求)function hansCurl($url){$url"https://www.yyob.com";$ip rand(0, 255) . . . rand(0, 255) . . . rand(0, 255) . . . rand(0, 255);$header[] "accept: application/json";$head…

聊聊代码整洁之道

摘要: Any fool can write code that a computer can understand. Good programmers write code that humans can understand. 普通的工程师堆砌代码,优秀的工程师优雅代码,卓越的工程师简化代码。Any fool can write code that a computer c…

负载均衡SLB新功能介绍

摘要: 随着网络的各个核心部分业务量的提高,访问量和数据流量的快速增长,其处理能力和计算强度也相应地增大,使得单一的服务器设备根本无法承担。通过负载均衡扩展现有网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、…

架构师必备技能:教你画出一张合格的技术架构图

戳蓝字“CSDN云计算”关注我们哦!当我们想用一张或几张图来描述我们的系统时,是不是经常遇到以下情况:对着画布无从下手、删了又来?如何用一张图描述我的系统,并且让产品、运营、开发都能看明白?画了一半的…

ios键盘done中文_IOS_IOS关闭键盘的方法,首先输入完成后按键盘上的done - phpStudy...

IOS关闭键盘的方法首先输入完成后按键盘上的done关闭键盘首先在Interface Builder中选择TextFields,然后在Text Field Attributes中找到Text Input Traits,选择Return Key为done。OK定义方法- (IBAction) textFieldDoneEditing:(id)sender; //按下Don…

php 显示对像编码,PHP面向对象之旅:类型提示

PHP是弱类型语言,向方法传递参数时候也不太区分类型。这样的使用会引起很多的问题,PHP开发者认为,这些问题应该是由代码书写者在书写代码时进行检验以避免。没有类型提示很危险下面的代码可能会出现问题。class NormalUser{/** 其它相关代码.…

java.net.SocketException: 权限不够

java.net.SocketException: 权限不够 一切问题的根源都是缺乏常识 0.0… 背景:今天部署一个spring cloud服务,tanainaide 服务的端口为80,然后我建了个tomcat用户来启动,但是死活起不来,搞了好久还以为是环境问题都重…

人工智能让边缘计算更有价值!

摘要: 继云计算之后,边缘计算这把火你了解多少?来了解一下吧。3月28日,在2018云栖大会深圳峰会上,阿里云宣布2018年将战略投入到边缘计算技术领域,并推出了首个IOT边缘计算产品Link Edge,将阿里云在云计算、…

硬件测试工程师之EMC项目-电磁干扰-谐波测试的引文

1: 介绍EMC项目-谐波测试 1.1引入文章 硬件测试工程师所面对的测试产品,尤其对于EMC来说,测试的种类很多,都是电器居多,例如电磁炉,USB适配器,空调,开关驱动,智能挂壁式…

儿童节,5岁宝宝写给程序员爸爸的一封信!萌翻了!

摘要: 六一儿童节到了,云栖社区特别采访了几位可爱的宝宝,来分享他们眼中的程序员爸爸妈妈。六一儿童节到了,云栖社区特别采访了几位可爱的宝宝,来分享他们眼中的程序员爸爸妈妈。最后一位宝宝的回答,萌翻了…

外部jar包_大数据系列之PySpark读写外部数据库

本文以MySQL和HBASE为例,简要介绍Spark通过PyMySQL和HadoopAPI算子对外部数据库的读写操作1、PySpark读写MySQLMySQL环境准备参考“数据库系列之MySQL主从复制集群部署”部分1.1 PyMySQL和MySQLDB模块PyMySQL是在Python3.x版本中用于连接MySQL服务器的一个库&#x…

Vue + Spring Boot 项目实战(二):使用 CLI 搭建 Vue.js 项目

文章目录一、安装 Vue CLI二、构建前端项目2.1.创建一个基于 webpack 模板的项目2.2. 安装图解2.3. 项目结构总览2.4. 运行项目2.5. 浏览器验证项目GitHub 地址: https://github.com/Antabot/White-Jotter在动手操作之前,我希望大家已经清楚什么是 “前后…

人工智能与大数据的完美结合

摘要: 人工智能是一种在大数据世界中指引方向和获取规律的方法。人工智能(AI)已经存在几十年了。然而,最近随着“大数据”的出现,它得到了越来越多的关注。维基百科对人工智能的释义如下:在计算机科学中,人…

这本销量突破70W+的 Python 插画式书籍,凭什么这么火?

戳蓝字“CSDN云计算”关注我们哦!最近不管我在互联网看新闻、看视频或者看公众号文章,甚至我在淘宝的时候都会看到一个词,那就是“Python”,我也不知道我对它做了什么,为什么老是给我推送Python?甚至我和程…