python中元组与列表的区别

相同点

1、都是Python中最常用的数据结构
2、都是序列
3、都可以存储任何数据类型
4、可以通过索引访问

不同点

语法差异

列表创建使用方括号[],而元组创建使用括号()。

>>>l=['a','b']
>>>t=('a','b')
>>>print(type(l))
<class 'list'>
>>>print(type(t))
<class 'tuple'>

是否可变

列表(list)是动态的,长度并不是固定的,在代码中可以随意的增加,删除或者修改列表中的元素

元组(tuple)的长度是固定的,一旦生成,无法对其进行增加,删除或修改操作,因此,若需对元组进行增加操作,可新创建一个元组,进行连接。

>>>l=['a','b']
>>>l.append('c')
>>>print(l)
['a', 'b', 'c']
>>>t=('a','b')
>>>t.append('c')
Traceback (most recent call last):
  File "<input>", line 1, in <module>
AttributeError: 'tuple' object has no attribute 'append'
>>>c=('c',)
>>>print(t+c)
('a', 'b', 'c')

列表是可变的,而元组是不可变的,这是两者之间的关键差异。

我们可以修改列表的值,但是不修改元组的值。

>>>l[1]='c'
>>>print(l)
['a', 'c']
>>>t[1]='c'
Traceback (most recent call last):
  File "<input>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment

由于列表是可变的,我们不能将列表用作字典中的key。 但可以使用元组作为字典key。

在元组初始化阶段嵌套进一个列表,那么列表性质不会被改变。元组里的列表正常运作,如果需要某些数值不会改变,某些数值需要改变 ,元组和列表的互相嵌套可以解决问题。

重用与拷贝

由于元组是不可变的,因此无法进行复制。 如果运行tuple(tuple_name)将返回自己

>>>copy_l=list(l)
>>>print(l is copy_l)
False
>>>copy_t=tuple(t)
>>>print(t is copy_t)
True
>>>print(copy_t)
('a', 'b')
>>>print(copy_l)
['a', 'c']

大小差异

Python将低开销的较大的块分配给元组,因为它们是不可变的。 对于列表则分配小内存块。 与列表相比,元组的内存更小。 当你拥有大量元素时,元组比列表快。列表的长度是可变的。

>>>l=['a','b']
>>>t=('a','b')
>>>print(l.__sizeof__())
56
>>>print(t.__sizeof__())
40

同构与异构

习惯上元组多用于用于存储异构元素,异构元素即不同数据类型的元素,比如(ip,port)。 另一方面,列表用于存储同构元素,这些元素属于相同类型的元素,比如[int1,in2,in3]。

元组通常由不同的数据,而列表是相同类型的数据队列。元组表示的是结构,而列表表示的是顺序。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值