专栏首页Python小屋Python元组与列表的相同点与区别

Python元组与列表的相同点与区别

列表和元组都属于有序序列,支持使用双向索引访问其中的元素、使用内置函数len()统计元素个数、使用运算符in测试是否包含某个元素、使用count()方法统计指定元素的出现次数和index()方法获取指定元素的索引。虽然有着一定的相似之处,但列表和元组在本质上和内部实现上都有着很大的不同。

元组属于不可变(immutable)序列,一旦创建,不允许修改元组中元素的值,也无法为元组增加或删除元素。因此,元组没有提供append()、extend()和insert()等方法,无法向元组中添加元素;同样,元组也没有remove()和pop()方法,也不支持对元组元素进行del操作,不能从元组中删除元素。元组也支持切片操作,但是只能通过切片来访问元组中的元素,而不允许使用切片来修改元组中元素的值,也不支持使用切片操作来为元组增加或删除元素。从一定程度上讲,可以认为元组是轻量级的列表,或者“常量列表”。

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

最后,作为不可变序列,与整数、字符串一样,元组可用作字典的键,也可以作为集合的元素,而列表则永远都不能当做字典键使用,也不能作为集合中的元素,因为列表不是不可变的,或者说不可哈希。

本文分享自微信公众号 - Python小屋(Python_xiaowu),作者:董付国

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-01-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python按元组中第一个字符串升序第二个字符串降序排序

    问题描述:假设有一个列表,里面包含若干元组,每个元组中有两个字符串,现在要求对列表中的元组进行排序,排序规则为:第一个字符串升序,如果第一个字符串相同则按第二个...

    Python小屋屋主
  • Python语言常用的49个基本概念及含义

    Python小屋屋主
  • 当Python列表遇上复合赋值运算符+=

    首先感谢集美大学蔡莉白老师发现这个问题并与我沟通交流,我在蔡老师提供的代码基础上又稍作扩展和补充。 对于列表x而言,x += y和x = x+y并不等价,在一定...

    Python小屋屋主
  • 变量类型-Tuple

    教程: 一:元组的创建     元组(tuple)与列表类似,不同之处在于元组的元素不能修改     (1)tuple写在圆括号之间,元素用逗号隔开    ...

    py3study
  • Python的元组学习(五)

    本节来学习python的元组,在python语言中,元组的关键字是tuple同时元组是不可变的,列表与字典是可变的,元组的定义是一个(),下面通过代码...

    无涯WuYa
  • Python数据类型之元组

    元组和列表有一个很重要的区别,那就是元组是不可改变的,定义了元组里面的元素就不能随便改动了。 由于和列表是近亲关系,所以元组和列表在实际使用上是非常相似的。

    王强
  • 这或许是对小白最友好的python入门了吧——10,元组

    元组和列表差不多,但是和列表又不一样,除了长得不一样外,还有一个很大的不同就是元组的元素不能修改。 元组是这样写的(以矩形的长宽为例): rectangle =...

    用户1315847
  • 详解数据库自然连接

    自然连接:是一种特殊的等值连接,它要求两个关系进行比较的分量必须是相同的属性组,并且在结果集中将重复属性列去掉。

    the5fire
  • dotnet 新 sdk style 项目格式的一些命名空间和引用

    在使用 sdk style 的 csproj 项目格式,会发现右击引用找不到程序集,此时有一些命名空间没有找到。本文收集一些命名空间所在的引用

    林德熙
  • Python编写数据库连接工具

    前段时间写过一个数据库暴力破解的工具,使用了一个28G的大字典,最后还是以失败告终。当然这个也是自己写着娱乐的。并没有发布出来。通过测试来看,破解数据库密码还是...

    小白程序猿

扫码关注云+社区

领取腾讯云代金券