6月1号,Python元组、字典、集合

在这里插入图片描述

1 元组的介绍

  • 一般当数据不改变时,用元组,其余情况用列表。

1.1 元组的创建

  • 用()
  • 对比——列表的创建:[]

输入:

tup=()
print(tup,type(tup))

得到:

() <class 'tuple'>

添加元素如下:

tup=(1,2,3,4,5)
print(tup,type(tup))

得到:

(1, 2, 3, 4, 5) <class 'tuple'>
  • 元组也可以通过索引值来进行取值
tup=(1,2,3,4,5)
print(tup[3])

得到:

4
  • 元组不能通过索引值来赋值
tup=(1,2,3,4,5)
tup[3]=44
print(tup)

报错:

TypeError: 'tuple' object does not support item assignment

元组是不可变序列,或称不可变对象

tup=10
print(tup,type(tup))

得到:

10 <class 'int'>

此时元组中的数为整型,我们稍加改变:

tup=10,
print(tup,type(tup))

得到:

(10,) <class 'tuple'>

此时就变成了一个元祖。又例如:

tup=1,2,3,4,5
print(tup,type(tup))

输出:

(1, 2, 3, 4, 5) <class 'tuple'>

不加括号,它也是一个元组。因此我们总结如下:

如果元组不是空的,那么它里面至少得有一个逗号

1.2 元组的解包

tup=10,20,30,40
a,b,c,d=tup
print('a=',a)
print('b=',b)
print('c=',c)
print('d=',d)

得到:

a= 10
b= 20
c= 30
d= 40

感觉似曾相识?回顾这个例子:

a=6
b=8
b,a=a,b
print(a,b)

得到:

8 6

如果我们用两个值解剖四个元素,会出现什么情况呢?

tup=10,20,30,40
a,b=tup
print('a=',a)
print('b=',b)

报错:

ValueError: too many values to unpack (expected 2)

理论上,变量必须和元素一一对应,若不满足,需要加*(详见下面的内容)。

该如何调整呢?理论上我们应该再添加两个,但是如果这里缺的值有10000个,我们总不能添加10000个变量吧,因此,我们使用:

tup=10,20,30,40
a,b,*c=tup
print('a=',a)
print('b=',b)

此时:

a= 10
b= 20

我们可以看看此时c是什么效果:

tup=10,20,30,40
a,b,*c=tup
print('a=',a)
print('b=',b)
print('c=',c)

得到:

a= 10
b= 20
c= [30, 40]

说明:剩下的元素以列表的形式全部储存在c中,不用考虑变量有多少个。

那么,另一个问题来了,如果想存储中间的元素呢?

tup=10,20,30,40
a,*b,c=tup
print('a=',a)
print('b=',b)
print('c=',c)

得到:

a= 10
b= [20, 30]
c= 40

把第一个给了a,最后一个给了c,剩下的中间部分全部给了b

同理:

tup=10,20,30,40
*a,b,c=tup
print('a=',a)
print('b=',b)
print('c=',c)

结果可想而知:

a= [10, 20]
b= 30
c= 40

这个功能在列表里是否适用呢?

a,b,*c=[1,2,3,4,5,6,7
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值