Python基础专栏⑩-python基础篇-复合数据类型-元组

上篇我们介绍了列表结构的数据类型,本篇我们将要介绍另外一种复合数据结构类型-元组。

元组的概念

元组和列表有很多类似的地方,都可以存放任何类型的数据,也有不同的地方,最大的不同就是元组是不可变类型,即元组一旦创建生成,里面的元素是不可改变的。

列表和元组可以相互转化,列表转成元组相当于”冻结“列表,元组转成列表相当于”解冻“元组。

元组的创建

方式一:直接用界定符小括号赋值的方式创建。

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中元组的介绍,希望对您有所帮助和启示。

--------------------------------------------------------------

如果对您有所帮助和启发,请关注和支持作者,您的点赞和关注是作者创作下去的动力源泉。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智信达软件定制化开发python

如感觉有帮助,请作者喝杯咖啡吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值