Python元组(tuple)基础:定义、特性与常用操作详解
本文详细介绍Python中元组(tuple)的基础概念。元组是有序且不可变的序列,与列表类似但创建后无法修改。文章涵盖元组的声明方式、单元素元组的特殊写法、省略括号的简写技巧,以及索引、切片、拼接、重复、成员检测和常用内置函数等核心操作。
元组简单介绍
元组是Python中的一种数据结构,其形态与列表非常相似,同样表现为一个有序的序列集合。
尽管元组和列表在基本特性上有很多共通之处,但两者之间存在一些关键的区别。
声明元组
var = (1, 2, 3)
var = ("1", "2", "3")
var = (True, False)
var = (1.1, 1.11, 1.111)
var = ((1,), (2, 3), (4, 5))
var = ([1, 2], {"name": "polo"})
元组与列表的区别
元组和列表在表现形式上十分接近,二者都代表有序的序列,并且拥有相同的方法集和操作运算规则。它们的主要区别在于:
列表在创建完成后,允许对其中元素进行修改。
而元组一旦创建,其内容便固定下来,无法进行任何修改。
lis = [1, 2, 3]
lis[0] = 111
print(lis)
tupl = (1, 2, 3)
tupl[0] = 2
# 输出结果
Traceback (most recent call last):
File "/Users/polo/Documents/pylearn/第一章:python 基本类型/6_tuple元组.py", line 21, in <module>
tupl[0] = 2
TypeError: 'tuple' object does not support item assignment
究极原因在于
根本原因在于,列表属于可变对象,而元组属于不可变对象。关于可变与不可变对象的详细解析,可以参考。
//www.jb51.net/article/218564.htm
特殊的元组
若一个元组内部不包含任何元素,可以通过使用空括号 () 来表示这是一个空元组。
# 空
tup = ()
print(tup, type(tup))
# 输出结果
() <class 'tuple'>
如果一个元组只包含一个元素,该如何正确表示?
# 只包含一个元素
tup = (1)
print(tup, type(tup))
# 输出结果
1 <class 'int'>
乍看之下,(1) 似乎就是常见的数学运算括号,但实际在Python中,这只是一个被括号包裹的整数表达式。那么,究竟该如何正确表示单元素元组呢?
正确表示元组只包含一个元素
# 正确
tup = (1,)
print(tup, type(tup))
# 输出结果
(1,) <class 'tuple'>
必须在元素后方添加一个逗号,使用 (item, ) 的格式来表示该元组。
总结
(123, ) 表示的是一个元组,其中包含一个整数元素 123。
(123) 表示的是一个带有括号的数学表达式,整数 123 被嵌入在括号中,其类型仍为整数而非元组。
元组的简写
当元组出现在赋值符号 = 的右侧时,可以省略外层的括号。
# 等价写法
a = 1, 2
print(a, type(a))
a = (3, 4)
print(a, type(a))
a = 1,
print(a, type(a))
a = (3,)
print(a, type(a))
# 输出结果
(1, 2) <class 'tuple'>
(3, 4) <class 'tuple'>
(1,) <class 'tuple'>
(3,) <class 'tuple'>
元组常见运算操作
索引 [ ] 取值
# 索引
tup = [1, 2, 3, 4, 5]
print(tup[0])
print(tup[-1])
print(tup[2])
# 输出结果
1
5
3
切片 [ : : ] 取值
与列表相同,元组也支持切片操作。
使用语法:元组[start : end : step],用于获取元组中位于 [start, end) 范围内的子元组。
需要注意的是,范围 [start, end) 包含 start 索引对应的元素,但不包含 end 索引对应的元素。
step 参数用于设定步长,若设为 n,则每隔 n 个元素获取一次。
# 切片
tup = [1, 2, 3, 4, 5, 6, 7, 8]
print(tup[:]) # 取全部元素
print(tup[0:]) # 取全部元素
print(tup[2:5]) # 取第 3 个元素到第 5 个元素
print(tup[::-1]) # 倒序取所有元素
print(tup[-3:-1]) # 取倒数第 3 个元素到倒数第 2 个元素
# 输出结果
[1, 2, 3, 4, 5, 6, 7, 8]
[1, 2, 3, 4, 5, 6, 7, 8]
[3, 4, 5]
[8, 7, 6, 5, 4, 3, 2, 1]
[6, 7]
运算符 +
使用运算符 + 可以将多个元组连接在一起。
# +
tup1 = (1,)
tup2 = (2, 3)
print(tup1 + tup2)
# 输出结果
(1, 2, 3)
运算符 *
使用运算符 * 可以将元组中的元素进行重复。
# *
tup = (1, 2)
print(tup * 2)
# 输出结果
(1, 2, 1, 2)
关键字 in
通过关键字 in 可以检查元组中是否包含指定元素,该操作返回布尔值。
not in 则是用于取反判断。
# in
tup = (1, 2, 3)
print(1 in tup)
print(22 not in tup)
# 输出结果
True
True
常见函数
len(元组) 函数
# len
tup = (1, 2, 3)
print(len(tup))
# 输出结果
3
max(元组) 函数
# max
tup = (1, 2, 3)
print(max(tup))
# 输出结果
3
min(元组) 函数
# min
tup = (1, 2, 3)
print(min(tup))
# 输出结果
1
元组常见方法
元组和列表在表示有序序列方面非常相似,两者的核心区别在于:
- 列表在创建后,允许进行元素修改。
- 元组在创建后,不允许进行任何修改。
这一点在讨论可变对象与不可变对象的文章中已有详细说明。
index(item)
该方法用于在元组中查找指定的元素 item。
如果成功找到元素 item,则返回该元素在元组中的索引位置。
如果未找到指定元素,则会抛出异常。
# index
tup = (1, 2, 3)
print(tup.index(1))
print(tup.index(11))
# 输出结果
0
Traceback (most recent call last):
File "/Users/Documents/pylearn/第一章:python 基本类型/6_tuple元组.py", line 88, in <module>
print(tup.index(11))
ValueError: tuple.index(x): x not in tuple
count(value)
该方法返回元素 value 在元组中出现的总次数。
# count
tup = (1, 2, 1)
print(tup.count(1))
print(tup.count(11))
# 输出结果
2
0
元组总结
由于元组是不可变对象,因此它通常适合用于存储那些不需要改变的数据。
到此这篇关于Python基础数据类型tuple元组的概念与用法的文章就介绍到这了,更多相关Python数据类型tuple元组内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













