python元组和列表的区别

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

python元组和列表的区别
静态数据类型
静态数据类型是指不可以对该数据类型进⾏修改,即只读的数据类型。

迄今为⽌学过的静态数据类型有字符串,元组。

在使⽤[]操作符对字符串,元组进⾏修改时,Python会抛出类型错误的异常信息,我们可以在交互模式中进⾏验证:
>>> content = "static data type"
>>> content[0]=S
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'S' is not defined
>>> numbers = (1,2,3,4,5)
>>> numbers[0] = 6
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
可变数据类型
与静态数据类型相对的是可变数据类型,在可变数据类型中,可以对集合中的元素进⾏修改。

列表,以及在后⾯将要介绍的复合数据类型:字典,集合,类类型等,都是可变的数据类型。

我们同样可以在交互模式中进⾏验证:
>>> numbers = [1,2,3,4,5]
>>> id(numbers)
2749153235976
>>> numbers[0]=6
>>> numbers
[6, 2, 3, 4, 5]
>>> id(numbers)
2749153235976
从交互模式的输出中可以分析出,可以通过[]操作符列表类型进⾏修改。

修改后的列表与修改前的列表,它们具有相同的id 值,说明是同⼀个列表。

执⾏内置的id函数可以输出id值,id值即内存地址。

元组与列表的区别
在使⽤元组的场景中,都可以使⽤列表来进⾏代替,那么为什么还要定义元组这种数据类型?在本⼩节的内容中,通过两个⽅⾯来进⾏分析:
(1) 元组是静态,只读的数据类型
元组与列表的核⼼区别在于,元组是静态的,列表是动态的, 可变的。

我们在定义变量时,如果该数据对象具备静态,只读的属性,应当使⽤元组,否则应当使⽤列表。

以⽣活中的购物清单来进⾏举例,在购物清单中,我们可以随时对清单进⾏修改,⽐如添加某⼀个商品,或从购物车中移除某⼀个商品。

购物清单是可修改的,动态的,现在通过Python代码进⾏模拟:
# __desc__ = 通过Python代码模拟购物清单的添加和删除
# 定义shopping_list,表⽰购物清单
shopping_list = ["消毒液", "⼝罩", "⽩酒"]
# ⼝罩已经断货,从购物车中移除
shopping_list.remove("⼝罩")
# shopping_list的输出为["消毒液", "⽩酒"]
# 从购物车中添加葵花⼝服液
shopping_list.append("葵花⼝服液")
# shopping_list的输出为["消毒液", "⽩酒", "葵花⼝服液"]
⼀周有七天,从周⼀到周⽇,不会再包含其它的时间单位,⼀周所包含的时间显然是静态的。

此时通过元组来定义⼀周的所有时间,在使⽤上⾮常⾃然:
# __desc__ = 通过元组来表⽰⼀周
# 定义变量week,表⽰⼀周
week = ("周⼀", "周⼆", "周三","周四", "周五", "周六","周⽇")
我们同样可以通过列表来表⽰⼀周:
# __desc__ = 通过列表来表⽰⼀周
# 定义变量week,表⽰⼀周
week = ["周⼀", "周⼆", "周三","周四", "周五", "周六","周⽇"]
由于列表是动态的数据类型,所以可以在程序中随时对列表进⾏修改,⽐如某粗⼼的程序员在⼀周的时间⾥添加了⼀个周⼋:# __desc__ = 粗⼼的程序员添加了个周⼋
# 定义变量week,表⽰⼀周
week = ["周⼀", "周⼆", "周三","周四", "周五", "周六","周⽇"]
week.append("周⼋")
# week的输出为["周⼀", "周⼆", "周三","周四", "周五", "周六","周⽇","周⼋"]
⼀周的时间⾥包含周⼋,这显然不符合⽇常逻辑。

⽽使⽤元组,可以避免这样的问题,⼀旦对元组进⾏修改,Python就会抛出异常。

(2) 元组的⾃动解包
利⽤这样的特性,可以⾮常优雅地对多个变量进⾏赋值。

代码实例:
# __desc__ = 通过元组的解包来优雅地赋值
# 定义returned_values表⽰函数的返回值
returned_values = (True, 1314)
state, result = retured_values
# state的值为True, result的值为1314
在Python的函数中可以返回多个值,实质返回的是⼀个元组,然后利⽤元组的⾃动解包,将返回值⼀⼀地进⾏赋值。

知识要点
(1) 静态数据类型是指不可以对该数据类型进⾏修改,即只读的数据类型。

迄今为⽌学过的静态数据类型有字符串,元组。

(2) 与静态数据类型相对的是动态数据类型,动态数据类型⽀持对集合中的元素进⾏修改。

列表,以及其它复合数据类型:字典,集合,类类型等,都是动态的数据类型。

以上就是python 元组和列表的区别的详细内容,更多关于python 元组和列表的资料请关注其它相关⽂章!。

相关文档
最新文档