当前位置:   article > 正文

免费视频教程!零基础学Python系列(10) - 数据类型之tuple_构造元组的某个元素是可变类型

构造元组的某个元素是可变类型

本节我们接着讲元组(Tuple)类型:

这个系列教程建议对照着视频学习,以下仅为课件内容。

本节课程的视频和实例源码下载方式:点击->我的主页,查看个人简介。

我尽量坚持每日更新一节。


元组,也是一种序列结构,它和列表非常类似,但是它不能被改变。也就是说,我们不能对元组中的元素进行修改。元组的语法如下:

(item1, item2, item3, …)

由中括号将所有列表元素括起来,不同的元素之间通过逗号分隔。

元组的语法和列表是不是很像,唯一的差别就是它用的小括号,而列表用的中括号。其实不然,元组还有一些特殊的地方,比如下面两个元组的定义:

  1. # file: ./5/5_7.py
  2. # 元组的操作
  3. tuple_1 = (1, 2, 100, 'python')
  4. tuple_2 = 'hello', 'python', 100  # python中,未加括号的序列都默认是元组
  5. tuple_3 = (98,)  # 只包含一个元素的元组,需要加上逗号,否则小括号会被认为是运算符

元组的操作和列表几乎是一样的,我们就不一一列出了,大家可以参考列表去练习。

下面我们主要通过实例来看看元组“不可改变”的特性。

  1. # 元组的元素不可改变
  2. tuple_4 = (1, 5, 10)
  3. # tuple_4[0] = 3  # 会抛出异常

上面代码运行时会抛出异常:

TypeError: 'tuple' object does not support item assignment

明确提示,元组对象不支持元素的改变。

 

但是,元组元素可以是可变数据类型,如下操作是合法的:

  1. # 元组的元素可以是可变数据类型
  2. tuple_5 = (100, 200, [300, 400])
  3. tuple_5[2][0] = 500
  4. print(tuple_5)

 

下图解释了这个过程:

 

我们所谓的元组不可改变,指的是元组本身不可改变。但如果它的元素指向的是一个可变类型,那么这个元素指向的对象是可以改变的。因为整个过程中,元组本身并没有发生改变。

 

再看下面这个例子:

  1. tuple_4 = (1, 5, 10)
  2. tuple_4 = (100, 99)
  3. print(tuple_4)

这个例子可以正常运行,并且输出我们预期的正确结果。这说明tuple_4可以被改变吗?还记得我们在前面讲变量的哪些实例吗,我们用同样的方法把tuple_4这个变量对应的内存地址打印出来,看看它究竟发生了什么变化?

  1. tuple_4 = (1, 5, 10)
  2. print(id(tuple_4))
  3. tuple_4 = (100, 99)
  4. print(tuple_4)
  5. print(id(tuple_4))

输出结果为:

2812724308608

(100, 99)

2812723061120

我们可以看到,tuple_4在重新赋值后,它对应的内存改变了。这个行为和数字、字符串是不是很像呢?没错,这一类数据类型我们称为“不可变数据类型”。

不可变数据类型对应的内存中的数据是不能被修改的,就像tuple_4一样,它重新被赋值后,实际上是被指向了一块新的内存。原来的那块内存中的数据依然没有改变。

后面我们拿一个小节来总结一下可变数据类型和不可变数据类型。


本节课程的视频和实例源码下载方式:点击->我的主页,查看个人简介。

我尽量坚持每日更新一节。

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/305625
推荐阅读
相关标签
  

闽ICP备14008679号