Logo

郎哥编程

详解Python语言中元组和列表的区别

2018-10-15 1310

本篇介绍Python中的元组数据类型,文中会讨论元组与列表的区别,元组的声明、赋值及其相关运算。通过本篇的学习,可以达成如下目标。

● 掌握元组和列表的区别

● 掌握元组的声明和赋值

● 掌握适用于元组的相关运算

Python元组和Python列表数据类似,都是线性表。唯一不同的是,Python元组赋值后所存储的数据不能被程序修改,可以将元组看作是只能读取数据不能修改数据的列表。因为元组类型和列表类型有很多相同之处,关于列表类型讲过的内容,不文不再重复讲述,重点讲述元组和列表的不同之处,然后讨论一下元组数据的不可修改特性。


1、元组声明与赋值


声明一个元组并赋值的语法与列表相同,不同之处是元组使用小括号,列表使用方括号,元素之间也是用英文逗号分隔。需要注意的是,当元组只有一个元素时,需要在元素的后面加一个英文逗号分隔符,以防止与表达式中的小括号混淆。这是因为小括号既可以表示元组,又可以表示表达式中的优先级算符,这就容易产生歧义。

例1:声明元组数据并赋值的例子

#创建存储字符串类型的元组
student = ('张明',"赵虎","马汉","李云龙","王义");
print(student);
#创建存储浮点型的元组
sealdata = (128.92,65.90,13809.1,79.689,0.23,127.00);
print(sealdata);
#创建存储复数类型的元组
complexdata = (64.375-1.27j,12.73-875J,0.026-0j);
print(complexdata);
#创建存储一个元素的元组
objdata = ('张明',);
print(objdata);
#创建嵌套元组
score = ('张明',(96,85,92),'赵虎',(98,89,100));
print(score);

例1输出结果如下图所示。

 image.png                                            


2、  元组的访问


元组的访问和列表相同,可以直接使用下标索引访问元组中的单个数据项,也可以使用截取运算符访问子元组。访问运算符包括“[]”和“[:]”运算符,用于访问元组中的单个数据项,或者一个子元组。

例2:访问元组元素的例子

#创建存储字符串类型的元组
student = ('张明',"赵虎","马汉","李云龙","王义");
#访问值为张明和马汉的元素
print(student[0]+":"+student[2]);
#创建存储浮点型的元组
sealdata = (128.92,65.90,13809.1,79.689,0.23,127.00);
#访问值为79.689和127.00的元素
print("%.2f:%.2f" % (sealdata[3],sealdata[5]));
#创建存储复数类型的元组
complexdata = (64.375-1.27j,12.73-875J,0.026-0j);
#访问列表的第2个元素
print(complexdata[1]);
#创建存储一个元素的元组
objdata = ('张明',);
#访问列表的第1个元素
print(objdata);
#创建嵌套元组
score = ('张明',(96,85,92),'赵虎',(98,89,100));
#访问张明的成绩单
print("张明的成绩:语文:%d  数学:%d  英语:%d" % (score[1][0],score[1][1],score[1][2]));

例2输出结果如下图所示。

image.png



3、  如何更新元组


元组是不可修改类型,虽然在程序运行过程中无法对元组的元素进行插入和删除运算。但元组可以通过再构造一个新的元组替换旧的元组,来实现元素的插入和删除。

例3:更新元组元素的例子

#创建存储字符串类型的元组
student = ('张明',"赵虎","马汉","李云龙","王义");
print(student);
#给student重新赋值
student = ('张明',"赵虎");
print(student);
#创建存储浮点型的元组
sealdata = (128.92,65.90,13809.1,79.689,0.23,127.00);
print(sealdata)
#给sealdata重新赋值
sealdata = sealdata[0],sealdata[2]
print(sealdata)

例3输出结果如下图所示。

image.png



4、  元组的合并


可以把多个元组合并成一个元组,合并后的元组元素顺序保持不变。合并后的元组为一个新的元组,原有的元组保持不变。

例4:元组合并的例子

#创建存储字符串类型的元组
student = ('张明',"赵虎","马汉","李云龙","王义");
print(student);
#创建存储浮点型的元组
sealdata = (128.92,65.90,13809.1,79.689,0.23,127.00);
print(sealdata);
#创建存储复数类型的元组
complexdata = (64.375-1.27j,12.73-875J,0.026-0j);
print(complexdata);
#合并元组
mergedata = student + student + complexdata;
print(mergedata);

例4输出结果如下图所示。

image.png



5、  元组的遍历


元组的遍历方式和列表相同,都是应用for循环语句遍历元组的元素。

例5:元组遍历的例子

#创建存储字符串类型的元组
student = ('张明',"赵虎","马汉","李云龙","王义");
#元组迭代遍历
print("第一种遍历方式:利用迭代遍历")
for st in student:
    print("序号:%s   值:%s" % (student.index(st) + 1, st))
#元组索引遍历
print("第二种遍历方式:利用索引遍历")
for i in range(len(student)):
    print ("序号:%s   值:%s" % (i + 1, student[i]))
#应用枚举方式遍历
print("第三种遍历方式:利用枚举方法遍历")
for i, st in enumerate(student):
    print ("序号:%s   值:%s" % (i + 1, st))

例5输出结果如下图所示。

image.png



6、  操作元组的常用方法


和列表一样,适用于列表的方法也同样适用于元组的操作。但由于元组的不可修改特性,用于列表的排序、替换、添加等方法,在元组中不能使用。可以使用的主要方法有计算元组个数、求元组中最大值、求元组中最小值等方法。

例6:操作元组方法的例子

#创建存储浮点型的元组
sealdata = (128.92,65.90,13809.1,79.689,0.23,127.00);
print(sealdata);
#求元组元素的个数
count = len(sealdata)
print("sealdata元组的个数为:%d"  % count);
#求元组的最大值
max = max(sealdata);
print("sealdata元组的最大值为:%.2f" % max);
#求元组的最小值
min = min(sealdata);
print("sealdata元组的最小值为:%.2f"  % min);
#将列表转换为元组
student = ['have',"not","like","at","bike"];
tuplestedent = tuple(sealdata);
print(tuplestedent);

例6输出结果如下图所示。

image.png



7、  元组的不可修改特性


元组的不可修改特性可能会让元组变得非常不灵活,因为元组作为容器对象,很多时候需要对容器的元素进行修改,这在元组中是不允许的。元组可以说是列表数据的一种补充,数据的不可修改性在程序设计中也是非常重要的。例如,当需要将数据作为参数传递给API,但不希望API修改参数时,就可以传递一个元组类型;再如,当需要定义一组Key时,也可以采用元组类型。因此可以说元组和列表是互为补充的数据类型。

课程小结

元组与列表相同,也是容器对象,可以存储不同类型的内容。元组与列表有两个不同点。第一个不同点是元组的声明使用小括号,而列表使用方括号,当声明只有一个元素的元组时,需要在这个元素的后面添加英文逗号;第二个不同点是元组声明和赋值后,不能像列表一样添加、删除和修改元素,也就是说元组在程序运行过程中不能被修改。

用于列表的排序、替换、添加等方法也不适用于元组,适用于元组的主要运算有元组的合并、遍历、求元组的最大值和最小值等操作方法。


代码在线纠错(通义千问 qwen-max)

支持粘贴多个代码文件,提交后由阿里云通义千问自动分析代码漏洞、语法错误、逻辑问题并给出修改建议。
您已解锁 AI 代码纠错功能,可正常使用!

评论区

登录 后发表评论
?????姜义???? 2020-04-16 01:11

好多词汇都不知道什么意思,也不知道在以后的编程中要起到什么作用,这那里是入门级

郎宏林 2020-04-16 09:24

<p>这门课程确实需要有一定的编程知识,比较适合于计算机专业的学生学习Python编程。</p><p>如果是零计算机基础,建议你学习《Python遇上数学入门篇》,这个课程图文并茂,内容简单易懂,从编程基础讲起,可以很快入门。</p>