除了列表,Python 中还有另一个重要的数据结构——元组(tuple)。元组在Python中算比较有特色的类型,其特征和列表有许多相似之处。
有序:元组像列表一样是有序时,意味着项目有一个定义的顺序,而且该顺序不会改变。
不可变:列表是可变的,元组元素是不可变的,这意味着我们在创建列表后,不能更改、添加和删除项目。
元组具有索引,第一项的索引为[0],第二项的索引为[1],依此类推。
允许重复:和列表一样,由于原则具有索引,所以列表可以包含具有相同值的项目。
元组是由 () 括起来,里面的元素用逗号隔开,由一系列按特定顺序排列的值组成的,这些值可以是整数、浮点数、字符串,或另一个元组、列表,甚至是不同类型的数据都可以被容纳在元组中。通过type() 函数,列表被定义为具有数据类型 ‘tuple’ 的对象。
下面主要讲解组织元组、遍历整个元组、创建数值元组以及使用切片使用元组等内容。
创建元组:
tup1 = ('ph', 'ch', 2000 2023)
tup2 = (1, 2, 3, 4, 5,6,7)
tup3 = "a", "b", "c", "d",”f”
以上都是创建元组的例子。需要注意的是,如果元组中只有一个元素,需要在元素后面添加逗号,例如:tup1 = (50,),tup2=(”aaa”,)。
元组访问:
元组是有序的,你可以使用索引或者切片来访问元组元素,元组的索引从0开始,表示元组中第一个元素的位置。还可以通过负的来从末尾往前定位元素的位置,-1为最后的一个。
Num1 = (1, 2, 3, 4, 5,6,7)
first_num1 = num1[0]
last_num1 = num1[-1]
print("第一个数字:", first_num1) #: 第一个数字: 1
print("最后一个数字:", last_num1) #: 最后一个数字: 7
切片访问:切片操作来处理元组的一部分元素,切片操作使用方括号和冒号(:)来指定起始索引和结束索引,其原理和前面介绍的列表一样的。
frt= ('apple', 'banana', 'cherry', 'date', 'elderberry')
sublist = frt [1:4]
print("子元组:", sublist) #输出:子元组: ['banana', 'cherry', 'date']
copy_fruits = frt [:]
print("复制元组:", copy_fruits)
负的索引:负索引表示从末尾开始,-1 表示最后一个项目,-2 表示倒数第二个项目,依此类推。
for 循环遍历元组元素
tup1 = ('Python', 'tuple', 1000,"list")
for t in tup1:
print(t)
输出:
Python
tuple
1000
list
Out[13]:
('Python', 'tuple', 1000, 'list')
元组的运行速度比列表快,常使用元组控制循环体内遍历。
元组的操作
合并元组,使用加号 +:
这是最直接的方法,将两个元组直接相加,合并成一个新的元组。
tup1 = (1, 2, 3,"a","b","c","a")
tup2 = (4, 5, 6,"a","b")
tup3 = tuple1 + tuple2
print(merged_tuple) # 输出:(1, 2, 3, 'a', 'b', 'c', 4, 5, 6)
count()方法返回元组中指定值a出现的次数,
print("字符a在tup1中出现的次数",tup1.count("a"))
# 输出:字符a在tup1中出现的次数 0
print("字符a在tup3中出现的次数",tup3.count("a"))
# 输出:字符a在tup3中出现的次数 3
index() 方法查找指定值的第一次出现的位置对应的元组索引,如果未找到该值,index() 方法将引发异常。
print("tup1中a第一次出现的位置:",tup1.index('a'))
# tup1中a第一次出现的位置: 3
print("tup1中a第一次出现的位置:",tup1.index('d'))
d不在里面,报错。
ValueError Traceback (most recent call last)
<ipython-input-29-ac78a99b17df> in <module>
----> 1 print("tup1中a第一次出现的位置:",tup1.index('d'))
ValueError: tuple.index(x): x not in tuple
使用 len() 方法查看元组长度,元素的总个数 :
print("tup1的长度:", len(tup1))
print("tup3的长度:", len(tup3))
输出:
tup1的长度: 7
tup3的长度: 12
检查元素是否存在,可以使用 in 关键字:
如检查元组中是否存在a、d。
word='d'
if word in tup1:
print(f'{word}在元组中')
else:
print(f'{word}不在元组中')
输出:a在元组中
而d则输出 d不在元组中