Python 元组类型2

这章我们继续讲元组类型。

上章说到元组是不可变类型,意思是元组的内存地址不可变,但是如果我宰割个元组里存字典和列表这两种可变类型,我们是可以修改里面嵌套的列表和字典的值的。

因为列表和字典是可变类型嘛,即使我们改了它里面的值,而它本身的内存地址也不会法伤改变,这样也就不会导致元组里面存的这个列表和字典的内存地址发生变化。

继续用上一章的代码,试试里面的f能不能改。

x = (33, 'f', 2.4)
x[1]=(x)
print(x)

结果就是报错了,就是不能改元组里面的值。

现在我在这个元组里面嵌套一个字列表,然后再去改它的子列表。如果直接对这个字列表 进行赋值,那就相当于我们要用一个新的地址,覆盖它原来的这个地址,这肯定是不行的。

我现在改字列表的第三个索引,然后打印。结果就是我们重新赋值的‘e’。

x = (33, 'f', 2.4, ['a', 'b', 'c'])
x[3][0]='e'
print(x[3][0])

这也就验证了刚刚的分析,只要你没动元组里存的内存地址,你可以随便修改。我们现在打印修改前和修改后的id。

x = (33, 'f', 2.4, ['a', 'b', 'c'])
print(id(x[3]))
x[3][0]='e'
print(id(x[3]))

结果两个id是没有变化的。

既然元组是不可变类型,那么么要这个元组有什么意义呢?

如果我想存多个值,并且以后也没有要修改它的需求,那我就用列表定义然后我不去改定它不就行了,为什么还要元组这个类型呢?

虽然说这种情况下可以以使用列表,但是用元组也更加合理。你可以想象一下,由于列表的功能更加的丰富,不但能实现读的需求,海哥已实现改的需求。就像一家企业一样,你公司的业务涉及的越广,你的公司就会越庞大。

放在列表和元组上来说,也是一样,在存同等数据的情况下,毫无疑问,肯定是元组更加省内存空间。

所以我们以后写项目的时候,遇到一组数据只有读的需求,没有改的需求,那最优的方案就是使用元组。当然你就喜欢用列表也没问题,效率影响也不是那么大。

我们加下去来看元组的类型转换,这就很简单了,和列表一样,只要能被for循环遍历的类型都可以转成元组类型。

首先字符串肯定是可以转成元组类型的,然后列表也可以,地点也行,甚至我们学过的range方法也可以。

print(tuple('xxx'))
print(tuple([1,2,3]))
print(tuple({'q':1}))
print(tuple(range(5)))

就全部转成元组类型了。

然后我们来看元组的功能,由于元组不像列表,还可以往里面添加值、删除值以及修改值。

元组就很简单只有七个功能分别是查找元素的起始索引、查看元素的出现次数、索引取值、切片、统计长度、成员运算、循环。

这七个功能和列表一样,你自己多练习几遍就熟悉了。

未经允许不得转载:445IT之家 » Python 元组类型2

赞 (0) 打赏

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

支付宝扫一扫打赏

微信扫一扫打赏