列表是可变序列,有许多方法(包括变异和非变异方法),最常用作通用容器(它们的项目可以是任何类型的对象,尽管它有时被认为是更好的列表样式具有相同类型或类型的项目等效使用).

元组是不可变的序列,只有很少的方法(所有非变异的特殊元素),当你需要不变性以便将容器用作集合中的项目或字典中的键时(通过项目),最常使用这些方法也必须是不可变的 – 例如字符串,数字或其他嵌套元组,为此起作用).他们的项目可以是任何类型的对象,元组拥有许多不同类型的项目是完全正常的.

在少数几种情况下,元组或列表也可以发挥作用,在少数情况下,元组更小,构建速度更快的事实可以用来影响有利于元组的决策.例如,当函数需要返回多个结果时,使用它是最正常的

return fee, fie, foo, fum

即返回一个包含有问题的四个项目的元组,而不是

return [fee, fie, foo, fum]

也就是说,返回一个包含四个项目的列表 – 除了(小的收益)性能,“返回一个元组”常用的习惯用法也处理通常返回的多个结果不是相同或不可互换的类型的问题,因此,从风格上讲,无论如何,使用列表可能被认为是一个更可疑的选择.

元组的一个有用变体是它的子类型collections.namedtuple(需要Python 2.6或更高版本),它允许您按名称(使用属性语法)和索引(正常方式)访问项目.例如,如果导入集合位于模块顶部,则上述return语句可能会变为……

freturn = collections.namedtuple('freturn', 'fee fie foo fum')

def f():

...

return freturn(fee, fie, foo, fum)

现在,f()的调用者可以像以前一样使用它的返回值作为元组,但是会得到很好的替代品,例如…:

r = f()

print r.fie

代替不那么立即清晰可读

print r[1]

值得注意的是,与直接使用元组相比,使用collections.namedtuple创建的命名元组子类基本上没有额外开销,或者,正如文档所说,

they are lightweight and require no more memory than regular tuples.

python中的列表和元组_Python中的列表和元组有什么区别?相关推荐

  1. Python基础_第3章_Python中的循环结构

    Python基础_第3章_Python中的循环结构 文章目录 Python基础_第3章_Python中的循环结构 Python中的循环结构 一.回顾分支练习题 1.判断是否为一个合法三角形 2.求世界 ...

  2. Python基础_第5章_Python中的数据序列

    Python基础_第5章_Python中的数据序列 文章目录 Python基础_第5章_Python中的数据序列 Python中的数据序列 一.字典--Python中的==查询==神器 1.为什么需要 ...

  3. python列表方法语句_Python中列表和元组的相关语句和方法讲解

    列表(list): 首先,列表属于序列,那么序列类型可用如下内建函数-- list(iter):把可迭代对象转换为列表. str(obj):把obj对象转换为字符串,即用字符串来表示这个对象. tup ...

  4. python中的可变数据类型有列表和元组_Python中列表的 += 和 .extend() 的异同

    一道Python题 最近有朋友"考"了我一个Python的题:使用+=和.extend()两种方法扩展元组中的列表会发生什么.虽然我对Python中的可变数据类型.不可变数据类型的 ...

  5. python中的列表和元组_python中列表和元组的区别

    如果有了解过python中的列表和元组,你可能会知道相对于列表,元组是不可变的,也就是说元组中的数据不能随意更改.除了列表是用中括号表示而元组是用小括号表示之外,这两种数据类型好像并没有什么不同,都是 ...

  6. python的内建数据结构包括_Python中3种内建数据结构:列表、元组和字典

    Python中有3种内建的数据结构:列表.元组和字典.参考简明Python教程 1. 列表 list是处理一组有序项目的数据结构,即你可以在一个列表中存储一个 序列 的项目.假想你有一个购物列表,上面 ...

  7. python中字典列表元组_Python中的列表和元组

    python中字典列表元组 Lists and tuples are arguably Python's most versatile, useful data types. You will fin ...

  8. python中集合是序列吗_Python中序列,列表,元组,字典及集合

    1.序列 一块用于存放多个值的连续内存空间,且按一定顺序排列,每个值都分派一个数字,称为索引或位置 (1).索引 序列中的每个元素都有一个编号,从0开始 若负数作为索引时,是从-1开始的,最后一个元素 ...

  9. python只能对列表进行切片_Python中的列表

    1. 列表的创建 列表(list)是Python中一个非常重要的类型,用于管理一组数据,列表的形式如下所示 country = ['China', 'Germany', 'Russia', 'Amer ...

最新文章

  1. go语言基础到提高(5)-结构
  2. MariaDB配置慢日志
  3. 干货 | 双目摄像头实现手势识别,完美还原人体运动手势
  4. 1024程序员节来啦!!.NET技术圈独家优惠劵,折后再折,赶紧来抢啊
  5. 【LeetCode笔记】155. 最小栈(Java、栈)
  6. 收获,不止SQL优化——抓住SQL的本质--第十章
  7. android 实现抽屉效果
  8. 计算器怎么编程java_java编程中怎样实现一个计算器
  9. shader一些语义或术语的解释
  10. python-第三课-字符串详解
  11. 日本与美国服务器比较
  12. Nginx反向代理到另外一台服务器,域名解析IP变更后连接超时
  13. IDEA连接数据库出现the server time zone value ‘�й���׼ʱ��‘ is unrecognized or represents more than one time
  14. csdn竟然还有这种神器!后悔没有早点知道!超好用的csdn插件,别再犹豫了,赶快入手吧!
  15. 触摸控件与显示控件介绍
  16. 推荐一款免费的cdn加速网站
  17. Linux下软件逆向工程的介绍(一)
  18. Pyhton dict 中文无法做key的问题
  19. 优酷通过世界杯,让所有人知道:优酷真的优,真的酷!
  20. BigDecimal除法后保留两位小数

热门文章

  1. 【solidity学习】僵尸之谜一
  2. 6个超级无敌实用APP,每一个都是百里挑一
  3. 名帖175 苏轼 行书《寒食帖》
  4. SeLinux android
  5. Erlounge III 归来,好消息一箩筐!
  6. vimtex的安装与应用(仍在学习,未完待续... ...)
  7. 【ArcGIS Pro二次开发】(8):图层(Layer)的基本操作
  8. 计算机房教师授课记录表,大连工业大学信息技术中心
  9. Kali渗透之基于SMB协议收集信息
  10. leetcode之开篇——刷题只为陶冶情操,修身养性