A. python元组和序列区别是什么
python元组和序列的区别:
1、元组作为很多内置函数和序列类型方法的返回值存在,也就是说,在使用某些函数或者方法时,它的返回值是元组类型,因此你必须对元组进行处理。
2、元组比列表的访问和处理速度更快,因此,当需要对指定元素进行访问,且不涉及修改元素的操作时,建议使用元组。
3、元组可以在映射(和集合的成员)中当做“键”使用,而列表不行。
4、列表是动态数组,它们可变且可以重设长度(改变其内部元素的个数)。
5、元组是静态数组,它们不可变,且其内部数据一旦创建便无法改变。
6、元组缓存于Python运行时环境,这意味着我们每次使用元组时无须访问内核去分配内存。
更多Python知识请关注Python视频教程栏目。
B. python(9):元组
元组是用逗号和圆括号定义的一种特殊的序列类型,之所以说它是特殊的,是因为它一旦定义之后,不能修改元素,不能添加元素,也不能删除元素,即它是不可变序列。元组一般有以下两种定义方法:
元组与列表的异同:
都属于序列类型,列表是可变序列类型,可随时修改、添加或删除元素,元组是不可变序列,其中的元素不可修改。
元组比列表的访问和处理速度更快,所以如果只需要对其中的元素进行访问,建议使用元组。
C. python的元组和列表有什么区别
首先我们需要了解的是,元组和列表属于序列,都是按照特定顺序储存的一组元素,可以将证书、实数、字符串、列表、元组、字典、集合等任何类型的内容,创建和删除的方法也是一样的。
那二者具体有什么区别呢?主要有以下几点:
1、列表是动态的,属于可变序列,元素可以增加、修改、删除,而元组是静态的,属于不可变序列,无法增加、删除、修改元素,除非整体替换。
2、列表可以使用append()、extend()、insert()、remove()和pop()等方法实现添加和修改列表元素,而元组没有这几个方法,因为不能向元组中添加和修改元素,同样,也不能删除元素,可以整体替换。
3、列表可以使用切片访问和修改列表中的元素,元组也支持切片,但它只支持通过切片访问元组中的元素,不支持修改。
4、元组比列表的访问和处理速度快,所以如果只需要对其中的元素进行访问,而不进行任何修改,建议使用元组而不使用列表。
5、因为列表可以修改,元组不可以修改,因此元组比列表具有更高的安全性。
6、列表不能作为字典的键,而元组可以。
7、存储方式不同:空列表比空元组多占用16个字节。
D. 深入理解python列表和元组
列表和元组都是一个可以放置任意数据类型的有序集合。这里需要注意三个词,任意、有序、集合,其实就是说明列表和元组是可以放置任意数据类型,其次是有序的,另外,它是一个集合。
列表是动态的,它的长度大小不固定的,可以随意的增加、删除或者改变。
元组是静态的,它的长度大小是固定的,无法增加、删除或者改变。
列表是动态的、可变的,而元组是静态的、不可变的。
列表的存储方式,如下所示:
元组的存储方式,如下所示:
存储同样的元素,元组使用的存储空间更小,要少16个字节。这是因为列表是动态的,所以列表中要存储指针,来指向对应的元素。另外,列表是可变的,所以需要额外存储已经分配的存储信息,因为它要知道现在已经存储了多少信息,还剩下多少,需不需要额外分配存储空间等等。所以,列表多出来的存储空间主要是:指针 + 存储空间长度。
如下例子可以看到列表存储空间的变化:
列表存储空间变化:
从列表和元组的存储方式可以得出,元组的性能是优于列表的。
元组和列表的初始化性能比较:
E. Python中的元组(Tuple)
在Python中,元组(Tuple)与列表(List)类似,也是一个有序的序列,但元组是一个不可变对象,其一旦初始化后便无法进行修改。
一般在创建元组时,分为创建空元组和非空元组,其创建方式如下:
从上面可以看到,我们只需要把元组的所有元素放在 小括号 () 里面,每个元素之间通过 逗号 , 间隔起来即可,当然和列表一样,元组中同样允许存放不同数据类型的元素。
元组中使用的 () 是常见的数学运算符,如果参考列表的创建,如下:
从上面可以看到,我们创建出来的压根就不是元组类型。那么我们想创建一个只包含一个元素的元组时,需要怎么创建呢?
很简单,只需要在元素后加上一个 逗号 , ,这样创建出来就是一个元组。
当我们需要访问元组中的元素,可以类似列表一样通过索引取值或切片取值。
如果访问的索引不存在,那么会报错: IndexError: tuple index out of range
在元组中,可以像列表一样使用切片,语法为: 元组[start:end:step] ,通过切片可以获取到元组中指定范围的元素,返回结果是一个新元组。在这里,需要注意切片的规则是左闭右开,也就是说包含头部 start,但不包含尾部 end ,而 step 则表示切片的步长,需要每间隔 step 个元素取一次。
在上面我们提到了元组是不可变的,这就意味着我们创建一个元组之后,不能再去改变其值了,比如下面这样就会出现报错:
假设元组中存在元素是一个可变对象,如果我们不改变元组,但改变了可变对象的值,又会得到怎么的结果呢?请看下面实例:
从上面可以看到,元组中的第 2 个元素似乎发生了变化,这岂不是和上面说的元组不可变自相矛盾了吗?
其实,我们说的元组不可变,指的是元组中各元素的指向永远保持不变。在上面操作中,元组中第 2 个元素指向的一直是 列表nums ,我们改变的其实不是元组的元素,而只是改变了 列表nums 中的元素。
元组是不可变的,因此我们就不能删除元组中的元素,但是,我们可以通过 del 语句删除整个元组。
通过关键字 in ,可检查当前元组中是否包含指定元素,返回结果为布尔值 True 或 False。
通过关键字 in ,还可以用于遍历当前元组。