1. 元组特性
列表是有序对象的集合并且支持原处修改,元组与列表的差别就在于它不支持原地修改。元组主要有以下特点:
1). 有序集合、通过偏移量来提取数据
与字符和列表相似,元组是一个位置有序的对象的集合 (从左到右),通过偏移量提取数据,支持索引和分片。
2). 不可变、固定长度、异构以及任意嵌套
因为元组是不可变的序列,不支持原处修改,因此长度固定;元组里面的对象可以是各种类型,支持异构;元组中可以嵌套元组,列表,字典等对象。
元组可以看作是对象引用的数组,元组存储指向其他对象的存取点 (引用) 。
这里说明一下,Python的不可变类型和可变类型在内存中的问题。我们知道,任何变量都是对一个对象的引用,在赋值过后指向数据所在的内存。对于不可变类型中的数字和字符串,不同的变量名若是对应相同的数据,它们指向的内存地址一样。对于可变类型和元组,不同的变量名若是有相同的数据,它们指向的内存地址不一样。 以上均在VS Code中测试,注意IDE和交互模式下不同,大家可以自行测试。
交互模式下,对于不可变类型,不同变量名指向相同的内存地址的情况:数字仅限小数字(参见之前的博客Python入门(三):对象类型之数字),字符串仅限没有空格和其他符号的连续字符。
#*******不可变类型********
##元组
t1 = (123,)
t2 = (123,)
print('tuple:',id(t1)==id(t2))
##数字
n1 = 1.2e30
n2 = 1.2e30
print('number:',id(n1)==id(n2))
##字符串
s1= 'hello python aaaaaaaaaa, bcd'
s2 = 'hello python aaaaaaaaaa, bcd'
print('string:',id(s1)==id(s2))
#*******可变类型********
##列表
l1 = [123]
l2 = [123]
print('list:', id(l1)==id