前言
今天要认识一个新的东西,可以说是一个戴上了枷锁的列表-------元组(tuple)
原表和列表使用方法差不多,但是它的使用却不像列表那么灵活,会显得被束缚
一、元组
元组和列表在实际的使用上是相似的
这里我们主要讨论元组和列表到底有什么不同来学习元组,因为他们两实在很像
元组和列表最大的区别就是列表可以任意的修改里面的元素 (包括插入、删除)
而元组不行,元组是不能改变的就像是字符串一样
二、创建元祖和访问元组
-
首先不一样就是创建的时候
用小括号,逗号隔开每个元素 -
访问的方式一样,用索引
-
用分片的方式也一样
-
那我们试着修改一下
我们发现不能被修改,会报错 -
那大家知道元组的标志性符号是什么
其实很多人都会说是小括号吧,但是不是哦 很多初学者都会上当
我们来试一下
为什么我们把temp 1 加上括号也还是int型
那我们再来试一下
我们看到没加小括号,这样也是个tuple
我们可以发现逗号其实是关键
或者像之前创建空列表一样
那来看像刚才的temp,我们只需给他加上一个逗号
甚至 不要个括号也行
来看一下 * 重复,那其实这时候我们会思考,不是说元组不能被改变吗?
因为我们加了逗号,所以说是元组===>这里不要说,不是说元组不能变吗,为什么这里可以,这里的话返回的8个8的元组是一个新元组,老的元组的确没有改变
三、更新和删除元组
不是说元组不能修改吗,为什么还谈更新元组呢?
不知道大家还记不记得我们以前是怎么去更新一个字符串的
没错,我们是通过现有的字符串 切片 然后构造出一个新的字符串。 因为字符串和元组一样元素是不能修改的
我们看到这个tk被加进去了是不是,但事实上是怎么回事呢?
这里把原来的元组拆成两部分,然后把中间的加上,构成一个新的元组,然后再把这个新的元组贴上temp的标签。
那么原来的这个元组还在不在,是在的,但是现在没有标签指向他了,过一会,这个python的回收器就会把旧的扔掉
ok,这里括号和逗号都是必须的,因为是一个元组的时候
那删除呢
对于元组不可改变的原则来说,单独删除一个元素时不可能的,但可以用切片的方式来间接的删除一个元素,那如果要删除整个元组可以用del这个
因为这个回收机制 当你静态的数据,例如元组、字符串这种在没有标签被贴上的时候,就会自动的呗回收。
所以我们不太很明显的去删除一个元组
四、操作元组
-
拼接
刚刚加的 +
-
重复操作符
*
-
成员操作符in 和not in
使用方法和列表一样 -
关系操作符><=等
使用方法和列表一样 -
逻辑操作符 and ,not ,or
都能使用,使用方法和列表一样