Python3面向对象--5.数据结构(2)元组Ⅰ

元组:
1.定义:可以按照顺序存储一定数量对象的对象,不可变
2.不可变;
元组与多数python集合(列表、字典、集,等等)一样,保存的是对象的引用。如果引用的元素是可变的,即便元组本身不可变,但是元素依然可变。也就是说元组的不可变性其实是指tuple数据结构的物理内容(即保存的引用)不可变,与引用的对象无关。


t=(1,2,[1,2])
print(id(t[-1]))
t[2].append(3)
print(t)
print(id(t[-1]))

2078751220360
(1, 2, [1, 2, 3])
2078751220360


"t[-1]中对象的地址没有变"

3.不可变优势:
用作字典类型的键,可以用作其他对象拥有哈希值的地方,不可变的类型都是可哈希的。
为什么键必须是可哈希的?解释器调用哈希函数,根据字典中键的值来计算存储你的数据的位置。如果键是可变对象,它的值可改变。如果键发生变化,哈希函数会映射到不同的地址来存储数据。如果这样的情况发生,哈希函数就不可能可靠地存储或获取相关的数据。选择可哈希的键的原因就是因为它们的值不能改变。

"元组是不可变的,数值也是不可变的,所以键是不可变的因此可以希哈,作为字典的键"
a={(1,2,3):"早睡早起"}
print(a[(1,2,3)])

早睡早起

Process finished with exit code 0

4.作用:用来存储数据,不能存储行为。如果需要某行为来操纵元组,必须将元组传递给函数来执行这一个操作。

5.创建:
方式一: a=1,2,3
方式二 a=(1,2,3)
多元赋值实质也是元组的运用

x,y,z=1,2,3
x,y,z=(1,2,3)
(x,y,z)=(1,2,3)

解包:

a=(1,2,3)
x,y,z=a
"这个过程又称为元组解包,变量个数于元组内,值个数要相同"
print(x,y,z)

6.访问:切片

print(a[0:2])

(1, 2)
返回依然是元组类型

7.缺点:可读性差,无法通过阅读代码知道某个元组某个位置数据代表什么
比如上个例子中,a的第一个元素0,不知道它代表什么意思,质能通过所赋值的变量名称来猜测,比如所赋给的x。可能需要追溯到元组声明地方周到它含义

8.当知道所有值都会立即用到并且是通过解包形式访问其中的值时候,使用元组效果最好。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值