深入理解python列表和元组
展开全部
列表和元组都是一个可以放置任意数据类型的有序集合。这里需要注意三个词,任意、有序、集合,其实就是说明列表和元组是可以放置任意数据类型,其次是有序的,另外,它是一个集合。
列表是动态的,它的长度大小不固定的,可以随意的增加、删除或者改变。
元组是静态的,它的长度大小是固定的,无法增加、删除或者改变。
列表是动态的、可变的,而元组是静态的、不可变的。
列表的存储方式,如下所示:
元组的存储方式,如下所示:
存储同样的元素,元组使用的存储空间更小,要少16个字节。这是因为列表是动态的,所以列表中要存储指针,来指向对应的元素。另外,列表是可变的,所以需要额外存储已经分配的存储信息,因为它要知道现在已经存储了多少信息,还剩下多少,需不需要额外分配存储空间等等。所以,列表多出来的存储空间主要是:指针 + 存储空间长度。
如下例子可以看到列表存储空间的变化:
列表存储空间变化:
从列表和元组的存储方式可以得出,元组的性能是优于列表的。
元组和列表的初始化性能比较:
列表是动态的,它的长度大小不固定的,可以随意的增加、删除或者改变。
元组是静态的,它的长度大小是固定的,无法增加、删除或者改变。
列表是动态的、可变的,而元组是静态的、不可变的。
列表的存储方式,如下所示:
元组的存储方式,如下所示:
存储同样的元素,元组使用的存储空间更小,要少16个字节。这是因为列表是动态的,所以列表中要存储指针,来指向对应的元素。另外,列表是可变的,所以需要额外存储已经分配的存储信息,因为它要知道现在已经存储了多少信息,还剩下多少,需不需要额外分配存储空间等等。所以,列表多出来的存储空间主要是:指针 + 存储空间长度。
如下例子可以看到列表存储空间的变化:
列表存储空间变化:
从列表和元组的存储方式可以得出,元组的性能是优于列表的。
元组和列表的初始化性能比较:
展开全部
两者的区别如下:
1、定义方式
列表使用方括号[]定义,元素之间用逗号分隔,例如:
'''
list1=[1,2,3,4]
'''
元组使用小括号()或者不使用括号,元素之间同样用逗号分隔,例如:
'''
tuple1=(1,2,3,4)
tuple2=1,2,3,4
'''
2、可变性
列表是可变的,也就是说,我们可以通过索引值来修改列表中的元素或者添加新的元素,例如:
'''
list1[0]=0
list1.append(5)
'''
而元组是不可变的,一旦创建就不能修改,如果试图修改元组中的元素,会引发TypeError异常,例如:
'''
tuple1[0] = 0 # 报错:TypeError: 'tuple' object does not support item
assignment
'''
3、性能
由于元组是不可变的,其一些操作会比列表更加高效。例如,元组的创建和访问速度比列表更快,因为元组在创建后不需要额外的内存空间来存储新的元素或者调整已有元素的空间。同时,由于元组的不可变性,Python
解释器在处理元组的时候可以进行一些优化,使得元组的操作更加高效。
4、内置函数
Python中提供了一些内置函数来操作列表和元组,但它们对于两种数据类型的支持是不同的。例如,列表有append()、extend()、insert()
等方法来添加元素,而元组没有这些方法。元组有 count()、index() 等方法来查询元素,而列表也有这些方法。此外,列表的 pop()
方法可以删除指定位置的元素,并返回该元素的值,而元组没有这个方法。
1、定义方式
列表使用方括号[]定义,元素之间用逗号分隔,例如:
'''
list1=[1,2,3,4]
'''
元组使用小括号()或者不使用括号,元素之间同样用逗号分隔,例如:
'''
tuple1=(1,2,3,4)
tuple2=1,2,3,4
'''
2、可变性
列表是可变的,也就是说,我们可以通过索引值来修改列表中的元素或者添加新的元素,例如:
'''
list1[0]=0
list1.append(5)
'''
而元组是不可变的,一旦创建就不能修改,如果试图修改元组中的元素,会引发TypeError异常,例如:
'''
tuple1[0] = 0 # 报错:TypeError: 'tuple' object does not support item
assignment
'''
3、性能
由于元组是不可变的,其一些操作会比列表更加高效。例如,元组的创建和访问速度比列表更快,因为元组在创建后不需要额外的内存空间来存储新的元素或者调整已有元素的空间。同时,由于元组的不可变性,Python
解释器在处理元组的时候可以进行一些优化,使得元组的操作更加高效。
4、内置函数
Python中提供了一些内置函数来操作列表和元组,但它们对于两种数据类型的支持是不同的。例如,列表有append()、extend()、insert()
等方法来添加元素,而元组没有这些方法。元组有 count()、index() 等方法来查询元素,而列表也有这些方法。此外,列表的 pop()
方法可以删除指定位置的元素,并返回该元素的值,而元组没有这个方法。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询