序列类型概述

序列类型概述

序列类型有列表,元组,range,字符串,字节串等。之所以称为序列类型,因为它们中的元素是按顺序排列的,可以使用下标索引或切片取值。

a = [1,2,3]
b = 1,2,3
c = range(1,4)
d = '123'
e = b'123'
a[0],b[0],c[0],d[0],e[0]
(1, 1, 1, '1', 49)
chr(49) # 字节串索引取到的是 Unicode 码位值
'1'

序列类型又分为可变和不可变两种,列表是可变序列类型,元组,range,字符串,字节串是不可变序列类型。不可变序列类型普遍实现而可变序列类型未实现的唯一操作就是对 hash() 内置函数的支持。

这种支持允许不可变类型,例如元组被用作字典的键,以及存储在集合中。

尝试对包含有不可哈希值的不可变序列进行哈希运算将会导致 TypeError。

hash((1,2)), hash('12')
(-3550055125485641917, -480100434937186025)
{(1,2), '12'}
{(1, 2), '12'}
{([1,2],3),4}
---------------------------------------------------------------------------

TypeError                                 Traceback (most recent call last)

<ipython-input-10-b847264454c5> in <module>
----> 1 {([1,2],3),4}


TypeError: unhashable type: 'list'

可变序列类型,可以就地进行元素的增、删、改,而不可变序列类型不可以,有时看起来像,但其实是创建了新对象:

a, b = [1,2], (1,2)
print(id(a),id(b))
a += [3] # 将元素 3 加入列表中,相当于 a.extend([3])
b += (3,) # 将元组 b 与元组 (3,) 拼接赋值给 b
print(a,b)
print(id(a), id(b))
2058115879744 2058115232576
[1, 2, 3] (1, 2, 3)
2058115879744 2058115884416
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值