Python中Tuple和List的区别与用法

16 篇文章 0 订阅
14 篇文章 0 订阅

最近复习python基础知识,涉及到tuples和list的区别和用法特此记录(本笔记基于StackOverflow的回答)

1.语法上的差别

someTuple = (1,2)
someList = [1,2]
2. 数据size上的差别

a = tuple(range(1000))
b = list(range(1000))

a.sizeof() # 8024
b.sizeof() # 9088
由于tuples的操作拥有更小的size,也就意味着tuples在操作时相比list更快,当数据足够大的时候tuples的数据操作性能更优。

  1. 可执行的操作

b = [1,2]
b[0] = 3 # [3, 2]

a = (1,2)
a[0] = 3 # Error
tuples具有immutable的属性,意味着tuples内的元素一旦建立就无法更改、删除、排序,然而我们还是可以向list和tuples添加数据的。

a = (1,2)
b = [1,2]

id(a) # 140230916716520
id(b) # 748527696

a += (3,) # (1, 2, 3)
b += [3] # [1, 2, 3]

id(a) # 140230916878160
id(b) # 748527696
4. 用法

由上述可知,tuples是immutable,list是mutable的,所以我们可以将tuples用作dictionary的key,但是list不可以

a = (1,2)
b = [1,2]

c = {a: 1} # OK
c = {b: 1} # Error
因为tuples不可变,所以代码更安全。如果可能,能用tuple代替list就尽量用tuple。

  1. tuple和list存储的数据特性(基于此篇文章)

除了上述区别和用法以外,tuples和list还有一个区别是tuples通常是存储异质元素(heterogeneous)的数据结构,而list通常存储同质元素(homogeneous)的数据结构。

详细解释就是:

Tuples 通常存储的是一连串的不同种类的事务,但是我们将他们当做一个耦合的整体来处理(比如我们可以把键盘、鼠标、显示器、主机存储在一个tuples里,这些元素都是不同种类的元素,但是放在一起处理时可当作一个计算机硬件系统元素来看待,而一旦定义了这个系统,就不能随意更改已有的元素)
List 通常存储的是一连串的相同种类的事务,所以我们可以把list中的每个元素都当做一个独立的个体来处理(也就是mutable的思想,例如list中存储了一些随机整数,他们拥有相同的属性(都是整数),但各自独立(没有任何相关性),我们可以单独的更改list中任何元素而不影响整体的数据结构)

一个关于tuples易错的点(廖雪峰Python教程):

要定义一个只有1个元素的tuple,如果你这么定义:

t = (1)
t
1
定义的不是tuple,是1这个数!这是因为括号()既可以表示tuple,又可以表示数学公式中的小括号,这就产生了歧义,因此,Python规定,这种情况下,按小括号进行计算,计算结果自然是1。
所以,只有1个元素的tuple定义时必须加一个逗号,,来消除歧义:

t = (1,)
t
(1,)
Python在显示只有1个元素的tuple时,也会加一个逗号,,以免你误解成数学计算意义上的括号。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值