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 元组和列表的资料请关注我们其它相关文章!

(0)

相关推荐

  • 简单了解python列表和元组的区别

    列表(list)和元组(tuple)的一些基础 list和tuple都是一个可以放置任意数据类型的有序集合,都是既可以存放数字.字符串.对象等 list和tuple都支持负索引 In [8]: nums[-2] Out[8]: 'ad' In [9]: tp[-2] Out[9]: '33' list和tuple都支持切片操作 In [10]: nums[1:3] Out[10]: [3, 'ad'] In [11]: tp[1:3] Out[11]: (3, '33') list和tuple都

  • 在Python中字符串、列表、元组、字典之间的相互转换

    一.字符串(str) 字符串转换为列表 使用list()方法 str_1 = "1235" str_2 = 'zhangsan' str_3 = '''lisi''' tuple_1 = list(str_1) tuple_2 = list(str_2) tuple_3 = list(str_3) print(type(tuple_1)) print(type(tuple_2)) print(type(tuple_3)) print(tuple_1) print(tuple_2) pr

  • python3 字符串/列表/元组(str/list/tuple)相互转换方法及join()函数的使用

    在抓取网络数据的时候,有时会用正则对结构化的数据进行提取,比如 href="https://www.1234.com"等.python的re模块的findall()函数会返回一个所有匹配到的内容的列表,在将数据存入数据库时,列表数据类型是不被允许的,而是需要将其转换为元组形式.下面看下,str/list/tuple三者之间怎么相互转换. class forDatas: def __init__(self): pass def str_list_tuple(self): s = 'abc

  • Python基础学习之基本数据结构详解【数字、字符串、列表、元组、集合、字典】

    本文实例讲述了Python基础学习之基本数据结构.分享给大家供大家参考,具体如下: 前言 相比于PHP,Python同样也是脚本解析语言,所以在使用Python的时候,变量和数据结构相对于编译语言来说都会简单许多,但是Python相比于PHP来说,变量类型的定义会比较严格:string->int的转换没有PHP那么方便.但这也让程序稳定性有所提升,例如和客户端交互的时候,数据库取出来的数字int和缓存取出来的数字(默认是string)需要手动进行转换(否则会有报错提示),而PHP不需要手动转换的

  • python中读入二维csv格式的表格方法详解(以元组/列表形式表示)

    如何去读取一个没有表头的二维csv文件(如下图所示)? 并以元组的形式表现数据: ((1.0, 0.0, 3.0, 180.0), (2.0, 0.0, 2.0, 180.0), (3.0, 0.0, 1.0, 180.0), (4.0, 0.0, 0.0, 180.0), (5.0, 0.0, 3.0, 178.0)) 方法一,使用python内建的数据处理库: #python自带的库 rows = open('allnodes.csv','r',encoding='utf-8').readl

  • Python列表与元组的异同详解

    前言 "列表(list)与元组(tuple)两种数据类型有哪些区别"这个问题在初级程序员面试中经常碰到,超出面试官预期的答案往往能加不少印象分,也会给后续面试顺利进行提供一定帮助,这道题主要考察候选人对Python基本数据结构的掌握程度,属于简单类型的送分题,那么该如何来回答才不至于丢分? 相同点:都是序列类型 回答它们的区别之前,先来说说两者有什么相同之处.list 与 tuple 都是序列类型的容器对象,可以存放任何类型的数据.支持切片.迭代等操作 >>> foo

  • Python字符串、列表、元组、字典、集合的补充实例详解

    本文实例讲述了Python字符串.列表.元组.字典.集合.分享给大家供大家参考,具体如下: 附加: python的很多编译器提供了代码补全功能,并且在填入参数时提供提示功能 字符串 1.常用函数: 字符串是不可变对象,字符串的方法都不会改变原字符串的数据 s=" hEllo world!\t " print("s.capitalize():",s.capitalize())#标题格式化 print("s.center(20,'-'):",s.ce

  • python判断变量是否为int、字符串、列表、元组、字典的方法详解

    在实际写程序中,经常要对变量类型进行判断,除了用type(变量)这种方法外,还可以用isinstance方法判断: a = 1 b = [1,2,3,4] c = (1,2,3,4) d = {'a':1, 'b':2, 'c':3} e = "abc" if isinstance(a,int): print ("a is int") else: print ("a is not int") if isinstance(b,list): prin

  • python字符串,元组,列表,字典互转代码实例详解

    python字符串,元组,列表,字典互相转换直接给大家上代码实例 #-*-coding:utf-8-*- #1.字典 dict = {'name': 'Zara', 'age': 7, 'class': 'First'} #字典转为字符串,返回:<type 'str'> {'age': 7, 'name': 'Zara', 'class': 'First'} print type(str(dict)), str(dict) #字典可以转为元组,返回:('age', 'name', 'class

  • 元组列表字典(莫烦python基础)

    Tuple 叫做 tuple,用小括号.或者无括号来表述,是一连串有顺序的数字. a_tuple = (12, 3, 5, 15 , 6) another_tuple = 12, 3, 5, 15 , 6 List 而list是以中括号来命名的: a_list = [12, 3, 67, 7, 82] 两者对比 他们的元素可以一个一个地被迭代.输出.运用.定位取值: for content in a_list: print(content) """ 12 3 67 7 82

  • Python 字符串、列表、元组的截取与切片操作示例

    本文实例讲述了Python 字符串.列表.元组的截取与切片操作.分享给大家供大家参考,具体如下: demo.py(字符串.列表.元组的截取): # 切片(截取) [开始索引:结束索引:步长] 步长默认为1 结束索引默认截取到末尾 # 字符串的截取 print("012345"[1:3]) # 12 # 列表的截取 print([0,1,2,3,4,5][1:3]) # [1, 2] # 元组的截取 print((0,1,2,3,4,5)[1:3]) # (1, 2) # 字典的元素是无

随机推荐