python中列表和元组之间有啥区别?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python中列表和元组之间有啥区别?相关的知识,希望对你有一定的参考价值。

除了元组是不可变的之外,还应有语义上的区别来指导它们的用法。元组是异构数据结构(即它们的条目具有不同的含义),而列表是同类序列。元组具有结构,列表具有顺序。
使用这种区别可以使代码更加明确和易于理解。
一个示例是成对的页和行号,以成对参考书中的位置,如:
my_location = (42, 11) # page number, line number

然后,可以将其用作字典中的键来存储有关位置的注释。另一方面,列表可用于存储多个位置。自然地,人们可能想在列表中添加或删除位置,因此使列表可变是有意义的。另一方面,从现有位置添加或删除项目没有意义-因此,元组是不可变的。
在某些情况下,可能想更改现有位置元组中的项目,例如在页面的各行中进行迭代时。但是元组不变性迫使您为每个新值创建一个新的位置元组。从表面上看,这似乎很不方便,但是使用这样的不可变数据是值类型和函数式编程技术的基石,它可以具有很多优点。
官方Python文档也提到了这一点
“组是不可变的,并且通常包含一个异类序列…”。
在像Haskell这样的静态类型语言中,元组中的值通常具有不同的类型,并且元组的长度必须固定。在列表中,所有值都具有相同的类型,并且长度不是固定的。因此区别非常明显。
参考技术A

Python列表及元组的相同点

1. 索引相同,从左到右都为0~n-1;

2. 拼接相同,都可以用+拼接;

3. 计数相同,都使用len()函数统计元素个数、使用count()函数统计指定元素的出现次数;

4. 都属于有序序列;

5. 都可以使用del删除;

6. 都可以使用*来使本身重复;

7. 可以强制转换且切片方法一致;

8. 都可以使用for循环来进行元素遍历、索引遍历以及枚举遍历;

9. 使用index()方法获取指定元素的索引;

10. 使用运算符in测试是否包括某个元素。

Python列表及元组的不同点

1. 类型不同,元组类型为tuple,列表类型为lsit;

2. 修改方式不同,元组不能修改,列表可以根据索引来修改元素值;

3. 删除方式不同,列表使用pop()等函数删除元素,而元组不能删除元素,只能用del删除整个元组;

4. 查找方式不同,列表只能用Index()函数来查看,元组只能用index()函数来查看。

参考技术B 主要区别就是列表是可变的,元祖是不可变的;
列表可以添加,修改,删除元素可以排序,倒序等,但是以上元祖都不能做;
所以如果你的数据创建后可能要修改,就使用列表存放,
如果数据创建后不再改动,则用元祖即可。

深入理解python列表和元组

参考技术A 列表和元组都是一个可以放置任意数据类型的有序集合。这里需要注意三个词,任意、有序、集合,其实就是说明列表和元组是可以放置任意数据类型,其次是有序的,另外,它是一个集合。

列表是动态的,它的长度大小不固定的,可以随意的增加、删除或者改变。

元组是静态的,它的长度大小是固定的,无法增加、删除或者改变。

列表是动态的、可变的,而元组是静态的、不可变的。

列表的存储方式,如下所示:

元组的存储方式,如下所示:

存储同样的元素,元组使用的存储空间更小,要少16个字节。这是因为列表是动态的,所以列表中要存储指针,来指向对应的元素。另外,列表是可变的,所以需要额外存储已经分配的存储信息,因为它要知道现在已经存储了多少信息,还剩下多少,需不需要额外分配存储空间等等。所以,列表多出来的存储空间主要是:指针 + 存储空间长度。

如下例子可以看到列表存储空间的变化:

列表存储空间变化:

从列表和元组的存储方式可以得出,元组的性能是优于列表的。

元组和列表的初始化性能比较:

以上是关于python中列表和元组之间有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

Python元组与c语言的数组有啥区别吗

Python元组与c语言的数组有啥区别吗

请问列表和元组.怎么学.我看了半天没看懂怎么用,这个有啥用,求解谢谢

python中返回列表和元组之间的区别[重复]

Python的列表和元组的区别

python列表和元组的区别