写点什么

元组:轻量级列表

作者:乔乔
  • 2022-11-27
    辽宁
  • 本文字数:1012 字

    阅读完需:约 3 分钟

元组创建与元素访问

列表的功能虽然很强大,但负担也很重,在很大程度上影响了运行效率。有时并不需要那么多功能,很希望能有个轻量级的列表,元组正是这样一种类型。在形式上,元组的所有元素放在一对括号中,元素之间使用逗号分隔,如果元组只有一个元素则必须在最后加一个逗号。

>>> x=(1,2,3)    #直接把元组赋值给一个变量>>> type(x)     #使用type()函数查看变量的类型<class 'tuple'>>>> x[0]     #元组支持使用下标访问特定位置的元素1>>> x[-1]   #最后一个元素,元组支持双向索引3>>> x[1]=4   #元组不可变的TypeError:'tuple'object does not support item assignment>>> x=(3)    #这和x=3是一样的>>> x3>>> x=(3,)   #如果元组中只有一个元素,必须在后面多写一个逗号>>> x(3,)>>> x=()   #空元组>>> x=tuple()   #空元组>>> tuple(range(5))   #将其他迭代对象转换成元组(0,1,2,3,4)复制代码
复制代码

除了上面的方法可以直接创建元组之外,很多内置函数的返回值也是包含了若干元组的可迭代对象,如 enumerate(),zip()等。

>>> list(enumerate(range(5))[(0,0),(1,1),(2,2),(3,3),(4,4)]>>> list(zip(range(3),'abcdefg'))[{0,'a'},{1,b},{2,c}]复制代码
复制代码

元组与列表的异同点

相同点

  • 列表和元组都属于有序序列,都支持使用双向索引访问其中的元素。

使用count()方法统计元素的出现次数和index()方法获取元素的索引,len()map() ,filter() 等大量内置函数和+,*,+=,in等运算符也都可以用于列表和元组。虽然列表和元组有着一定的相似之处,但在本质上和内部实现上有很大的不同。

不同点

  • 元组属于不可变序列,不可以直接修改元组中元素值,也无法为元组增加或删除元素。

所以,元组没有提供append()extend()insert()等方法,无法向元组中添加元素,同样,元组也没有remove()pop()方法,也不支持对元组元素进行 del 操作,不能从元组中删除元素,只能使用 del 命令删除整个元组。元组也支持切片操作,但是只能通过切片来为元组增加或删除元素。从一定程度上讲,可以认为元组是轻量级列表。

  • python 内部对元组做了大量优化,访问速度比列表快

如果定义了一系列常量值,主要用途仅对他们进行遍历或其他类似用途,不需要对其元素进行任何修改,那么一般建议使用元组而不用列表。元组在内部实现上不允许修改其元素值,从而使得代码更加安全。例如,调用函数时使用元组传递参数可以防止函数中修改元组,使用列表则很难保证这一点。


发布于: 刚刚阅读数: 3
用户头像

乔乔

关注

平安喜乐,一切顺遂 2022-07-01 加入

一个热爱技术,热爱生活的人

评论

发布
暂无评论
元组:轻量级列表_11月月更_乔乔_InfoQ写作社区