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中列表和元组之间有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章