-
元组中的元素是无法修改的,事实上我们在项目中尤其是多线程环境(后面会讲到)中可能更喜欢使用的是那些不变对象(一方面因为对象状态不能修改,所以可以避免由此引起的不必要的程序错误,简单的说就是一个不变的对象要比可变的对象更加容易维护;另一方面因为没有任何一个线程能够修改不变对象的内部状态,一个不变对象自动就是线程安全的,这样就可以省掉处理同步化的开销。一个不变对象可以方便的被共享访问)。所以结论就是:如果不需要对元素进行添加、删除、修改的时候,可以考虑使用元组,当然如果一个方法要返回多个值,使用元组也是不错的选择。
-
元组在创建时间和占用的空间上面都优于列表。我们可以使用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什么是
元组
?
列表
是可以修改的
数据结构
,而
元组
...