Python3(10) 元组
在 Python 编程世界里,元组(Tuple)是一种重要的数据结构。它与列表有相似之处,但又有着独特的性质,其中最显著的就是元素不可修改。下面我将结合菜鸟教程的内容,通过代码示例深入学习 Python3 中的元组知识,方便日后复习回顾。
一、元组的创建
1.1 基本创建方式
元组使用小括号()
来创建,元素之间用逗号分隔。例如:
tup1 = ("Google", "Runoob", "Taobao")
tup2 = (1, 2, 3, 4, 5)
tup3 = "a", "b", "c", "d" # 不需要括号也可以,Python会自动识别为元组
print(tup1)
print(tup2)
print(tup3)
运行上述代码,分别输出创建的三个元组。这种创建方式简单直接,适用于各种类型数据的组合。
1.2 创建空元组与单元素元组
创建空元组时,直接使用一对空括号即可:
empty_tup = ()
print(empty_tup)
当元组中只包含一个元素时,需要在元素后面添加逗号,
,否则括号会被当作运算符使用。例如:
tup_with_one = (50)
print(type(tup_with_one)) # 不加逗号,类型为整型
tup_with_one = (50,)
print(type(tup_with_one)) # 加上逗号,类型为元组
运行代码后可以看到,不加逗号时,(50)
被识别为整数 50,而加上逗号后,才是真正的元组。
二、元组的访问
2.1 索引访问
元组与字符串、列表类似,下标索引也是从 0 开始,可以通过索引来访问元组中的值。例如:
tup = ("Google", "Runoob", "Taobao", "Wiki", "Weibo", "Weixin")
print(tup[0])
print(tup[2])
上述代码分别输出元组tup
中索引为 0 和 2 的元素。
2.2 反向索引
除了正向索引,元组也支持反向索引,-1 表示最后一个元素,-2 表示倒数第二个元素,以此类推。例如:
print(tup[-1])
print(tup[-3])
运行代码后,分别输出元组tup
中倒数第一个和倒数第三个元素。
2.3 切片访问
使用切片操作可以截取元组中的一段元素,语法和列表切片类似,为元组[起始索引:结束索引:步长]
(结束索引不包含在截取结果内)。例如:
print(tup[1:4])
print(tup[::2])
print(tup[::-1])
第一段代码截取索引 1 到 3 的元素;第二段代码从起始位置开始,每隔一个元素截取;第三段代码将元组反向截取。
三、元组的修改与删除
3.1 修改元组
元组中的元素值是不允许直接修改的,尝试修改会报错。例如:
tup = (12, 34.56)
# tup[0] = 100 # 这行代码会报错,TypeError: 'tuple' object does not support item assignment
但我们可以通过连接组合的方式创建一个新的元组。例如:
tup1 = (12, 34.56)
tup2 = ('abc', 'xyz')
tup3 = tup1 + tup2
print(tup3)
这里将tup1
和tup2
连接起来,生成了一个新的元组tup3
。
3.2 删除元组
元组中的元素值不允许删除,但可以使用del
语句删除整个元组。例如:
tup = ("Google", "Runoob", 1997, 2000)
print(tup)
del tup
# print(tup) # 这行代码会报错,NameError: name 'tup' is not defined
运行代码后,元组tup
被删除,再次尝试打印会提示变量未定义的错误。
四、元组运算符
4.1 长度计算
使用len()
函数可以计算元组中元素的个数。例如:
tup = (1, 2, 3, 4, 5)
print(len(tup))
运行代码后输出元组tup
的元素个数。
4.2 连接操作
元组之间可以使用+
运算符进行连接,生成一个新的元组,包含连接的两个元组的所有元素。例如:
a = (1, 2, 3)
b = (4, 5, 6)
c = a + b
print(c)
这里将元组a
和b
连接成新元组c
。
4.3 复制操作
使用*
运算符可以复制元组中的元素,生成一个新的元组。例如:
tup = ('Hi!',)
new_tup = tup * 4
print(new_tup)
运行代码后,('Hi!',)
被复制了 4 次,生成新元组new_tup
。
4.4 成员检查
使用in
关键字可以检查某个元素是否存在于元组中。例如:
tup = (1, 2, 3)
print(3 in tup)
print(5 in tup)
运行代码后,分别判断 3 和 5 是否在元组tup
中,并输出相应的布尔值。
4.5 迭代操作
可以通过for
循环对元组进行迭代,遍历元组中的每个元素。例如:
tup = (1, 2, 3)
for num in tup:print(num, end=" ")
运行代码后,会依次输出元组tup
中的每个元素。
五、元组内置函数
5.1 len(tuple)
计算元组元素个数,前面已有相关示例。
5.2 max(tuple)
返回元组中元素的最大值。例如:
tup = ('5', '4', '8')
print(max(tup))
这里返回元组tup
中的最大元素'8'
,需要注意的是,对于字符串类型的元组,比较的是字符的 ASCII 码值。
5.3 min(tuple)
返回元组中元素的最小值。例如:
tup = ('5', '4', '8')
print(min(tup))
运行代码后,返回元组tup
中的最小元素'4'
。
5.4 tuple(iterable)
将可迭代系列(如列表、字符串等)转换为元组。例如:
list1 = ['Google', 'Taobao', 'Runoob', 'Baidu']
tup1 = tuple(list1)
print(tup1)
运行代码后,列表list1
被转换为元组tup1
。
六、关于元组的不可变特性
元组的不可变指的是元组所指向的内存中的内容不可变。例如:
tup = ('r', 'u', 'n', 'o', 'o', 'b')
print(id(tup))
# tup[0] = 'g' # 尝试修改会报错,TypeError: 'tuple' object does not support item assignment
tup = (1, 2, 3)
print(id(tup))
运行代码后可以看到,当重新给tup
赋值时,它的内存地址发生了变化,说明是重新创建了一个新的元组对象,而不是修改原来的元组。
七、总结
Python3 中的元组虽然元素不可修改,但在数据存储和传递等场景中有着独特的优势。通过本文对元组创建、访问、修改(间接)、删除以及运算符、内置函数和不可变特性的学习,希望能帮助你更好地掌握元组的使用,在编程过程中根据实际需求灵活运用。