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

免费****!零基础学Python系列(10) - 数据类型之tuple

程序员文章站 2022-07-12 17:54:52
...

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

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

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

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


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

(item1, item2, item3, …)

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

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


# file: ./5/5_7.py

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

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

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

# 元组的元素不可改变

tuple_4 = (1, 5, 10)
# tuple_4[0] = 3  # 会抛出异常

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

TypeError: 'tuple' object does not support item assignment

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

 

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

# 元组的元素可以是可变数据类型

tuple_5 = (100, 200, [300, 400])
tuple_5[2][0] = 500
print(tuple_5)

 

下图解释了这个过程:

免费****!零基础学Python系列(10) - 数据类型之tuple

 

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

 

再看下面这个例子:

tuple_4 = (1, 5, 10)

tuple_4 = (100, 99)
print(tuple_4)

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

tuple_4 = (1, 5, 10)

print(id(tuple_4))
tuple_4 = (100, 99)
print(tuple_4)
print(id(tuple_4))

输出结果为:

2812724308608

(100, 99)

2812723061120

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

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

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


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

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

 

相关标签: 0基础学python****