第
深入剖析Python的列表和元组
目录1.定义2.区别3.索引4.嵌套数据类型强转1).嵌套2).数据类型强转5.常用内置函数1).count(item)2).index(item)3).list.reverse()4).list.sort()6.存储方式
1.定义
列表和元组,都是一个可以放置任意数据类型的有序集合。
在大多数编程语言中,集合内元素的数据类型必须保持一致,但在Python的列表与元组中,没有这个约束。
示例
列表List=[Tom,22,33,tony]
元组Tuple=(China,10)
如上列表与元组的示例,列表与元组集合内同时存放了int类型和string类型的元素
2.区别
列表是动态的,长度大小不固定,可以随意地新增、删除、修改集合内元素
input:
test_list=[Tom,22,33,tony]
test_tuple=(jack,10)
#test_list新增元素
test_list.append(100)
test_list.append(200)
print(test_list)
#test_list修改元素
test_list[0]=xiaomin
print(test_list)
#test_list删除元素
test_list.pop()
print(test_list)
output:
[Tom,22,33,tony,100,200]
[xiaomin,22,33,tony,100,200]
[xiaomin,22,33,tony,100]
从输入,输出可以证明列表支持集合内元素的新增、删除、修改
元组是静态的,长度大小固定,不可以新增、删除、修改集合内元素
input:
test_tuple=(jack,10)
#test_tuple修改元素
test_tuple[0]=xiaomin
print(test_tuple)
output:
Traceback(mostrecentcalllast):
Filetest001.py,line5,inmodule
test_tuple[0]=xiaomin
TypeError:tupleobjectdoesnotsupportitemassignment
从输入,输出可以证明元组不支持集合内元素的修改,新增和删除也不支持,大家可以自己动手实验下。
这也证明了Python中元组是静态不可变的。如果就想在原有元组集合中添加元素,有没有办法可以实现呢?
答案:有的,见如下示例
input:
test_tuple=(jack,10)
new_test_tuple=test_tuple+(20,xiaomin)
print(new_test_tuple)
output:
(jack,10,20,xiaomin)
虽然能实现想要的效果,但并不是真正意义上的原元组集合基础上元素的添加,而是创建了一个新的元组new_test_tuple来实现。
3.索引
Python中的列表和元组都支持正负数索引,正常索引区间,非正常索引区间取值。验证如下:
input:
test_list=[100,200,300,400,500]
#列表支持区间索引取值:取索引下标为1至倒数第2个元素之间的所有元素,规则:左闭右开
print(test_list[1:-1])
#列表支持单个正数索引取值:取正数第2个元素
print(test_list[2])
#列表支持单个负数索引取值:取倒数第2个元素
print(test_list[-2])
#列表支持非区间索引取值:从倒数第2个元素一直往前取所有
print(test_list[:-1])
print(**20)
test_tuple=(jack,10,20,tom)
#元组支持区间索引取值:取索引下标为1至倒数第2个元素之间的所有元素,规则:左闭右开
print(test_tuple[1:-1])
#元组支持单个正数索引取值:取正数第2个元素
print(test_tuple[2])
#元组支持单个负数索引取值:取倒数第2个元素
print(test_tuple[