tuple(元组)作为python中比较标志的数据结构,与list(列表)类似(这里不详细讲述列表),不同之处在于tuple的元素不能修改(一定程度上是这样的,后面会提到)。下面我来举几个例子。
举例子之前,先说明几个概念:
Python id() 函数:
用来获取对象地址
语法:id([object])
返回对象的内存地址
举个例子如图1-1
Python 中 is 和 == :
is 比较的是两个实例对象是不是完全相同,它们是不是同一个对象,占用的内存地址是否相同
== 比较的是两个对象的内容是否相等
差别在于is比较的是对象是否完全相同,即所占用的内存地址是否相同
而 == 比较的是内容是否相同(外表美和内在美)
举个例子如图1-2(图中两句一样的句子,但是由于地址不同,所以is的时候两边是不相等的,而 == 由于两句内容一样,所以返回true)
好,铺垫了一丢丢,我们要讨论本篇的主角:Tuple
我们先定义一个元组tuple
tupleA = ('a','b','c')
先尝试用list的方法操作,试着添加一个,tupleA.append("test")
报错!说了tuple是不可修改的!虽然这样很蠢,但尝试一下,证实了tuple确实是不这样子可以修改的。
tuple的基本操作:
比较两个元组元素。
计算元组元素个数。
返回元组中元素最大值。
返回元组中元素最小值。
将列表转换为元组。
刚才的常规操作好像征服不了tuple,现在关键的来了,来定义一个花样元组
tupleB = ('this','is',['girl','boy'])
先看下这个tupleB 的内存地址
然后我们执行一个神奇操作:
tupleB[2].append('emmmmm')
成功了!
虽说不管方法好不好,但是我们貌似成功了。我们再看下内存地址
所以总结来看从定义的角度来说元组是不可变的,因为元组中的对象不能被删除或被新对象所替代。
但是另一种意义上说然而在另一种意义上,元组是可变的,因为它们的值可以被改变。