python 元组和列表的区别

 更新时间:2020年12月30日 10:35:48   作者:薯条老师  
这篇文章主要介绍了python 元组和列表的区别,帮助大家更好的理解和学习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 元组和列表的资料请关注脚本之家其它相关文章!

相关文章

  • 详谈pandas中agg函数和apply函数的区别

    详谈pandas中agg函数和apply函数的区别

    下面小编就为大家分享一篇详谈pandas中agg函数和apply函数的区别,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • Python Pyperclip模块安装和使用详解

    Python Pyperclip模块安装和使用详解

    Pyperclip模块兼容python2和python3,能跨平台使用,这篇文章主要介绍了Pyperclip模块安装和使用详解,需要的朋友可以参考下
    2023-03-03
  • 解决django 向mysql中写入中文字符出错的问题

    解决django 向mysql中写入中文字符出错的问题

    这篇文章主要介绍了解决django 向mysql中写入中文字符出错的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-05-05
  • cookies应对python反爬虫知识点详解

    cookies应对python反爬虫知识点详解

    在本篇文章里小编给大家整理关于cookies应对python反爬虫知识点详解,有兴趣的朋友们可以学习下。
    2020-11-11
  • Pytest运行方式及参数使用示例详解

    Pytest运行方式及参数使用示例详解

    这篇文章主要介绍了Pytest运行方式及参数使用详细教程,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-06-06
  • Python类的继承用法示例

    Python类的继承用法示例

    这篇文章主要介绍了Python类的继承用法,结合实例形式分析了Python类的定义、继承等相关操作技巧,需要的朋友可以参考下
    2019-01-01
  • Django如何在不停机的情况下创建索引

    Django如何在不停机的情况下创建索引

    在本篇内容里小编给大家整理的是关于Django如何在不停机的情况下创建索引的相关文章,有兴趣的朋友们参考学习下。
    2020-08-08
  • python Xpath语法的使用

    python Xpath语法的使用

    这篇文章主要介绍了python Xpath语法的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • python 通过xml获取测试节点和属性的实例

    python 通过xml获取测试节点和属性的实例

    下面小编就为大家分享一篇python 通过xml获取测试节点和属性的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-03-03
  • Python中移除List重复项的五种方法

    Python中移除List重复项的五种方法

    本文列些处几种去除在Python 列表中(list)可能存在的重复项,这在很多应用程序中都会遇到的需求,本文介绍几种方法,感兴趣的可以了解一下
    2021-05-05

最新评论