Python的基础数据类型
- 数值类型:整数、浮点数、复数、布尔
- 字符串
- 容器类型:列表、元祖、字典、集合
元组
- 元组(Tuple)是一种不可变的序列类型,与列表类似,但有一些关键的区别。
- 本质:只读的列表(list)
定义元组
元组是由圆括号 () 包围的元素集合,元素之间用逗号分隔。元组一旦创建,其内容不能被修改。
# 创建一个空元组
empty_tuple = ()
# 创建一个包含几个元素的元组
my_tuple = (1, 2, 3, 'a', 'b', 'c')
访问元组元素
与列表一样,元组中的元素是有序的,可以通过索引来访问。
# 访问第一个元素
first_element = my_tuple[0] # 结果是 1
print(first_element)
# 访问最后一个元素
last_element = my_tuple[-1] # 结果是 'c'
print(last_element)
元组切片
元组也支持切片操作。
# 获取从索引1到索引3(不包括索引3)的元素
sub_tuple = my_tuple[1:4] # 结果是 (2, 3, 'a')
print(sub_tuple)
元组不可变性
元组是不可变的,这意味着你不能修改元组中的元素。
# 尝试修改元组中的元素会导致TypeError
# my_tuple[0] = 'one' # 这行代码会抛出错误
元组与列表的转换
可以使用 tuple() 函数将列表转换为元组,使用 list() 函数将元组转换为列表。
# 将列表转换为元组
my_list = [1, 2, 3]
my_tuple = tuple(my_list)
print(my_tuple)
# 将元组转换为列表
my_list_again = list(my_tuple)
print(my_list_again)
元组的优势
尽管元组是不可变的,但它们在以下情况下非常有用:
- 当你需要确保数据不会被意外修改时。
- 当你需要一个不可变的序列作为字典的键时。
- 当你从函数返回多个值时。
元组运算符
元组支持以下运算符:
- 索引运算符 []
- 切片运算符 [:]
- 成员运算符 in 和 not in
- 身份运算符 is 和 is not
元组与浅拷贝、深拷贝
由于元组是不可变的,通常不需要对元组进行浅拷贝或深拷贝。当你尝试对元组进行浅拷贝或深拷贝时,实际上会返回元组本身,因为它的内容无法改变。
import copy
# 浅拷贝和深拷贝元组
my_tuple = (1, 2, 3)
shallow_copied_tuple = copy.copy(my_tuple) # 返回元组本身
deep_copied_tuple = copy.deepcopy(my_tuple) # 也返回元组本身
# 在这里,shallow_copied_tuple 和 deep_copied_tuple 都是 my_tuple 的引用,因为元组不可变,所以没有必要创建副本。
print(id(shallow_copied_tuple))
print(id(deep_copied_tuple))
附件
本文对应的jupyter notebook源码链接,欢迎下载练习:https://download.csdn.net/download/fx_yzjy101/89757860
如有问题请留言。