1. 元组中的元素是无法修改的,事实上我们在项目中尤其是多线程环境(后面会讲到)中可能更喜欢使用的是那些不变对象(一方面因为对象状态不能修改,所以可以避免由此引起的不必要的程序错误,简单的说就是一个不变的对象要比可变的对象更加容易维护;另一方面因为没有任何一个线程能够修改不变对象的内部状态,一个不变对象自动就是线程安全的,这样就可以省掉处理同步化的开销。一个不变对象可以方便的被共享访问)。所以结论就是:如果不需要对元素进行添加、删除、修改的时候,可以考虑使用元组,当然如果一个方法要返回多个值,使用元组也是不错的选择。
  2. 元组在创建时间和占用的空间上面都优于列表。我们可以使用sys模块的getsizeof函数来检查存储同样的元素的元组和列表各自占用了多少内存空间,这个很容易做到。我们也可以在ipython中使用魔法指令%timeit来分析创建同样内容的元组和列表所花费的时间,下图是我的macOS系统上测试的结果。 (感谢 骆昊 大神的讲解 )
原文链接: http://blog.csdn.net/jackfrued Python 中有一个基础的 数据结构 ,叫做 元组 (tuple),但是一般挺少有人会去用它的,因为在开发过程中, 列表 (list)基本已经能够满足我们的需求。 即使是这样,你也千万不要就此认为 元组 是多余的。不然在面试中也不会经常被人问, 元组 列表 有啥区别?为什么 需要 元组 ? 以下两点,第一点是大家所熟知的,而第二点可能只有老司机才会知道,只有学习了第二点,才算真正理解了 元组 存在的价值和意义。 1. 不可变 列表 这是 元组 区别于 列表 最显著的特征。 list:可变的序列 tuple:不可变的序列 那什么是不可变的序列呢 在一些语言中,如C#或 Python 等,都提供了一种概念叫Tuple,即 元组 。在常见的面向对象的程序设计语言中,如C++,C#或Java中,都有类或结构体的概念。 元组 完全可以使用类或者结构体来表示,那么为什么这些语言又“多此一举”地提供了元祖这个概念呢?所以才有此问题:为什么要使用 元组 ? 本文不是tuple的基础文章,而是假设用户已经对tuple有了一定的了解,关于 元组 的概念请参阅相关文章。比... 元组 可以存储多个数据,也是属于容器 类型 ,但是 元组 一旦定义完成以后就不能根据下标直接修改 元组 中的数据。 元组 的表现形式: (1,3,4, 5,....), 类型 :tuple 元组 使用场景: 1.字符串的格式化输出, print("姓名: %s 年龄: %d" % ("李四", 20)) 2.函数返回多个值,可以通过 元组 来完成 my_tuple = (1, 2, 'a', 'b') # 提示: 元组 定义完成以后, 元组 里面的数据就不能进行修改,只能获取数据 print(my_tuple, type(my_tup 一个被经常问到的问题,为什么我们要区分 列表 元组 变量? 这个问题也可以表述为“我们真的 需要 两个相似序列 类型 吗?” 一个原因是在某些情况下,使用其中某种 类型 要优于另一种 类型 : 使用不可变 类型 (tuple): 如果我们在维护一些敏感数据,并且要把这些数据传递给一个我们不熟悉的函数,或者是我们根本不了解的函数,那么作为分工合作的一部分来说,如果我们确定我们传入的数据不会被修改,那么就安全了许多。 在JavaScript或php之类语言, 因为不支持 元组 , 严重影响了编程体验和代码可读性,用过从语言层面原生支持 元组 语法的语言后, 才会觉得不支持 元组 的语言真的low到了家, 元组 真的是编程语言中不可多得的优良特性。 元组 最重要的特点是用来实现多值返现, 对于天生就支持多值返回特性的语言, 如golang, 元组 存在的意义不大。 然而, 对于只支持单反回值函数的语言碰到有多返回值需求的... 问题本身并不复杂,有意思的是,这位同学在对方的反复逼问下,对自己的回答动摇了。 既然如此,我们不如借着这个机会,再深入的聊一聊 元组 列表 ,把心中的疑惑搞搞清楚。 在深入之前我觉得首选应该回顾 Python 的设计理念,它将我们为思考 Python 带来指引,这里摘录2条: 尽量找一种,最好是唯一一种明显的解决方案 Python 中一切皆对象 1. 列表 元组 有什么区别 按照知乎的传统,“要先问是不是,再问为什么”,所以第一部分我们先来看 Python 中有一个基础的 数据结构 ,叫做 元组 (tuple),但是一般挺少有人会去用它的,因为在开发过程中, 列表 (list)基本已经能够满足我们的需求。 即使是这样,你也千万不要就此认为 元组 是多余的。不然在面试中也不会经常被人问, 元组 列表 有啥区别?为什么 需要 元组 ? 以下两点,第一点是大家所熟知的,而第二点可能只有老司机才会知道,只有学习了第二点,才算真正理解了 元组 存在的价值和意义。 1. 不可变 列表 这是 元组 区别于 列表 最显著的特征。 list:可变的序列 tuple:不可变的序列 那什么是不可变的序列呢 原创小白系列第8篇小白:通过前几篇文章我知道了什么是 列表 以及操作。那么,什么是 元组 呢?小码哥:今天我们一起聊一下 元组 。01什么是 元组 列表 是可以修改的 数据结构 ,而 元组 ...