上篇我们介绍了列表结构的数据类型,本篇我们将要介绍另外一种复合数据结构类型-元组。
元组的概念
元组和列表有很多类似的地方,都可以存放任何类型的数据,也有不同的地方,最大的不同就是元组是不可变类型,即元组一旦创建生成,里面的元素是不可改变的。
列表和元组可以相互转化,列表转成元组相当于”冻结“列表,元组转成列表相当于”解冻“元组。
元组的创建
方式一:直接用界定符小括号赋值的方式创建。
t1=(1,2,3,4,5,6,7)
t2=("1","2",2.2,3)
print(t1)
print(t2)
#输出结果
'''
(1, 2, 3, 4, 5, 6, 7)
('1', '2', 2.2, 3)
'''
方式二:通过tuple()函数创建,以其他序列类型的数据作为数据源,生成元组。
t1=tuple([1,2,3,4,5,6,7])
t2=tuple("hello world")
print(t1)
print(t2)
#输出结果
'''
(1, 2, 3, 4, 5, 6, 7)
('h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd')
'''
几种特殊的情况
对于用tuple定义只有一个元素的元组时,需要额外增加一个逗号。
t2=(2,) # 逗号不能省略。
t3=(2) # 此处t3不是元组,是数字3
print(type(t3)) #<class 'int'>
无关闭分隔符:任意无符号的对象,以逗号隔开,默认为元组
t4=1,2,3,4,6,"7"
print(t4)
print(type(t4))
#输出结果
'''
(1, 2, 3, 4, 6, '7')
<class 'tuple'>
'''
元组上的函数
len()函数。
通过此函数可以返回元组中元素的个数,即元组大小。
t1=(1,2,3,4,5,6,7)
t2=tuple("hello world")
print(len(t1)) # 输出 7
print(len(t2)) # 输出 11
max()函数
此函数返回元组中值最大的元素。此时要求元组中的元素必须是同种类型的,并且支持比较运算符。
min()函数
此函数返回元组中值最小的元素。此时要求元组中的元素必须是同种类型的,并且支持比较运算符。
t1=(1,2,3,4,5,6,7)
t2=tuple("hello world")
print(max(t1)) # 输出 7
print(max(t2)) # 输出 w
t1=(1,2,3,4,5,6,7)
t2=tuple("helloworld")
print(min(t1)) # 输出 1
print(min(t2)) # 输出 d
sum()函数
此函数可以实现元组中所有元素的和,此时要求元素是同种类型,并且支持加法运算符。
t1=(1,2,3,4,5,6,7)
print(sum(t1)) # 输出 28
元组的操作
由于元组是不可改变的,所以常规操作是取得元组里面的元素。
元组也是序列类型的,通过索引和切片两种方式可以获取元组的元素。
方式一:索引方式
t1=(1,2,3,4,5,6,7)
print(t1[2]) # 输出 3
方式二:切片方式
t1=(1,2,3,4,5,6,7)
print(t1[2:4]) # 输出 (3,4)
print(t1[2:5:2]) # 支持步长 ,输出 (3,5)
元组不可改变的特殊性
元组的不可改变性是指元组元素的引用的不可改变,即指向的对象引用不变,如果元组中包括可变对象,比如元组中包含一个列表对象。如下:
t1=(1,2,3,[4,5,6])
print("t1初始值:",t1)
print("t1中列表元素的内存地址:",id(t1[3]))
t1[3].append(7)
print("t1中列表元素发生改变后:",t1)
print("t1中列表元素改变后的内存地址:",id(t1[3]))
#输出结果:
'''
t1初始值: (1, 2, 3, [4, 5, 6])
t1中列表元素的内存地址: 2361596405504
t1中列表元素发生改变后: (1, 2, 3, [4, 5, 6, 7])
t1中列表元素改变后的内存地址: 2361596405504
'''
通过分析输出结果得出:
元组中的列表元素虽然增加了一个数据,但是变得是列表本身,元组中保存的是列表的内存地址,地址并没有改变,指向的还是原来的列表,所以对于元组来说,里面的列表元素并没有发生变化,所以元组并没有变。
以上就是python中元组的介绍,希望对您有所帮助和启示。