欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

浅谈Python操作元祖的小细节

程序员文章站 2022-04-16 08:24:10
前言:本博文主要讲解Python操作元祖的小细节,更多关于元祖的知识,请访问:深究Python元祖操作及方法文章目录一、回顾元祖特点二、尝试修改元祖三、深入剖析原因一、回顾元祖特点元组的元素不能修改存储有序的数据类型二、尝试修改元祖首先,我们定义一个元祖:tup = ('hello', True, 10, ['a', 'b', 'c'])尝试修改元祖数据:tup[3][0] = 'A'tup[3][1] = 'B'tup[3][2] = 'C'修改完毕,我们输出下这...

前言:本博文主要讲解Python操作元祖的小细节,更多关于元祖的知识,请访问:深究Python元祖操作及方法

一、回顾元祖特点

  1. 元组的元素不能修改
  2. 存储有序的数据类型

二、尝试修改元祖

  1. 首先,我们定义一个元祖:
tup = ('hello', True, 10, ['a', 'b', 'c'])
  1. 尝试修改元祖数据:
tup[3][0] = 'A'
tup[3][1] = 'B'
tup[3][2] = 'C'
  1. 修改完毕,我们输出下这个元祖:
print(tup)

浅谈Python操作元祖的小细节
我们可以看到tup定义的时候有4个元素,分别是'hello', True, 10和一个list。前面说元祖一旦定义后就不可变了吗?怎么后来又变了?那么下来,我们对其进行剖析。

三、深入剖析原因

我们从表面上看:tuple的元素确实变了,但其实变的不是tuple的元素,而是list的元素。因为list是一个可变的数据类型,所以我们可以使用方法直接操作list,但是我们的tuple一开始指向的list并没有变成别的list,这个list在内存中存储地址的指向从来没有变过。所以,tuple所谓的“不变”是说,tuple的每个元素,指向永远不变。即指向'a',就不能改成指向'b',指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的。

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

四、补充元祖修改

虽说元祖是不可变数据类型,但是我们在实际操作元祖时,可以将其转换成列表,之后再进行操作;操作完成之后,转换回元祖即可。还是上面这个案例,我们再来看一下:

lst = list(tup)
print(lst)
lst.insert(1, "world")
lst[lst.index(True)] = False
print(lst)
tup = tuple(lst)
print(tup)

浅谈Python操作元祖的小细节
至此,元祖数据就修改成功了!

本文地址:https://blog.csdn.net/qq_44034384/article/details/107364197