Logo

郎哥编程

详解Python列表及其运算

2018-10-08 944

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

● 掌握列表的声明和赋值

● 掌握列表元素的添加、更新、删除、遍历操作

● 掌握列表的排序及比较操作

Python列表是线性表的一种表示方式。一个列表是n个数据元素的有限序列(a1,a2,…,an)。元素之间是相邻关系,即第i-1个元素领先于第i个元素,第i个元素领先于第i+1个元素。可以将第i-1个元素称为第i个元素的直接前驱元素,第i+1个元素称为第i个元素的直接后继元素。表中元素的个数为表的长度,长度为0的表称为空表。

Python列表中所存储元素的具体含义,在不同的情况下可以不同,它可以是一个数,也可以是字符串,甚至是更复杂的信息。它可以存储Python的标准类型,也可以存储自定义的数据结构及对象。Python对列表也提供了非常便捷的操作,列表可以执行pop、sort、append、remove等操作,也可以合并其它列表,或者将列表切片(切分出子列表)。


1、声明列表数据并赋值


在Python语言中,声明一个列表并赋值非常简单。列表元素用方括号[]括起来,元素之间用英文逗号分隔。不同于其它编程语言,列表可以包含任意类型的元素,可以在同一个列表中存储字符串、浮点类型、对象、复数类型等数据。

例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 = ['张明',0.026-0j,128.92,29,True];
print(objdata);
#创建嵌套列表
score = ['张明',[96,85,92],'赵虎',[98,89,100],];
print(score);

列表中可以嵌套列表,可以多层嵌套,构建二维、三维等多纬列表。如例1中的score列表,就内嵌了学生的成绩列表。


2、 访问列表数据


在Python语言中访问列表数据,可以直接使用下标索引访问列表中的单个数据项,也可以使用截取运算符访问子列表。

访问运算符包括“[]”和“[:]”运算符,用于访问列表中的单个数据项,或者一个子列表。

访问列表单个数据项可以使用“[]”运算符,访问语法如下:

list[index]

list是列表的变量名称,index是想要访问的列表下标索引,下标范围从0到列表长度减1。

例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 = ['张明',0.026-0j,128.92,29,True];
#访问列表的第1个元素
print(objdata[0]);
#创建嵌套列表
score = ['张明',[96,85,92],'赵虎',[98,89,100]];
#访问张明的成绩单
print("张明的成绩:语文:%d  数学:%d  英语:%d" % (score[1][0],score[1][1],score[1][2]));

在Python语言中,print不能直接输出浮点、整数等数值类型。用print输出数值类型时,需要使用格式化运算符。当访问嵌套列表元素时,需要使用多个下标进行访问。

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

 image.png

访问列表中的子表可以用“[:]”运算符,“[:]”运算符语法如下:

list[start:end]

list是列表的变量名称,start是起始索引,end是终止索引,该运算符访问包括start在内到end(不包括end)的范围内的列表元素,返回值仍是一个列表。

例3:访问列表中的子列表

#创建存储字符串类型的列表
student = ['张明',"赵虎","马汉","李云龙","王义"];
#访问赵虎、马汉、李云龙子列表
print(student[1:4]);
#创建存储浮点型的列表
sealdata = [128.92,65.90,13809.1,79.689,0.23,127.00];
#访问列表的前3个元素
print(sealdata[0:3]);
#创建存储复数类型的列表
complexdata = [64.375-1.27j,12.73-875J,0.026-0j];
#访问列表的最后2个元素
print(complexdata[1:3]);
#创建嵌套列表
score = ['张明',[96,85,92],'赵虎',[98,89,100]];
#访问张明的成绩单
print(score[0:2]);

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

image.png



3、列表元素的更新


更新列表元素可以采用访问列表元素的方法,在赋值运算符(=)左边使用访问运算符可以更新单个数据项或多个数据项,也可以用append方法顺序添加新的元素到列表,也可以使用insert方法在指定的位置插入一个元素到列表。

使用赋值语句更新列表元素

使用赋值语句和访问运算符可以对指定的单个列表元素或多个列表元素更新。

例4:使用赋值语句更新列表元素的例子

#创建存储字符串类型的列表
student = ['张明',"赵虎","马汉","李云龙","王义"];
#更新赵虎为李勇
student[1] = '李勇'
print(student);
#创建存储浮点型的列表
sealdata = [128.92,65.90,13809.1,79.689,0.23,127.00];
#更新列表前2个元素
sealdata[0:2] = [11.2,29.32]
print(sealdata);
#创建存储复数类型的列表
complexdata = [64.375-1.27j,12.73-875J,0.026-0j];
#更新列表第1到第2个元素
complexdata[1:3] = [96.2-1j,29.32-6j]
print(complexdata);
#创建嵌套列表
score = ['张明',[96,85,92],'赵虎',[98,89,100]];
#更新张明的成绩单
score[1] = [99,88,95]
print(score);

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

image.png


使用append方法添加列表元素

列表需要动态添加元素时,可以使用列表的append方法添加一个新的元素到列表的尾部。

例5:使用append方法添加元素

#创建存储字符串类型的列表
student = ['张明',"赵虎","马汉","李云龙","王义"];
#在列表中添加刘梅
student.append("刘梅");
print(student);
#创建存储浮点型的列表
sealdata = [128.92,65.90,13809.1,79.689,0.23,127.00];
#在列表中添加浮点数19.2
sealdata.append(19.2);
print(sealdata);
#创建存储复数类型的列表
complexdata = [64.375-1.27j,12.73-875J,0.026-0j];
#在列表中添加字符串"复数"
complexdata.append("复数")
print(complexdata);
#创建嵌套列表
score = ['张明',[96,85,92],'赵虎',[98,89,100]];
#在列表中添加刘梅的成绩
score.append("刘梅")
score.append([92,89,95])
print(score);


4、列表元素的删除


删除指定位置或范围的列表元素可以使用del方法,del方法也可以删除整个列表。如需要删除匹配元素内容的数据项,可以使用列表的remove方法,也可以使用pop方法移除列表中的一个元素。

使用del方法删除列表元素或列表(本身)

del方法不仅能删除单个或多个列表元素,也可以删除整个列表。一般来说,编写程序时不需要删除整个列表,因为当列表出了作用域(例如,程序结束,函数调用完成等),Python会自动删除该列表。

del删除列表元素的语法为:

del  dataList[i]  或  del  dataList[start:end]

其中,del为方法,dataList为列表变量名称,i为待删除列表元素的索引。start是起始索引,end是终止索引。

del删除列表的语法为:

del  dataList

其中,del为方法,dataList为列表变量名称。

例6:使用del方法删除列表元素及列表的例子

#创建存储字符串类型的列表
student = ['张明',"赵虎","马汉","李云龙","王义"];
#删除列表第2个元素
del student[1];
print(student);
#创建存储浮点型的列表
sealdata = [128.92,65.90,13809.1,79.689,0.23,127.00];
#删除列表第2到第4个元素
del sealdata[1:5]
print(sealdata);
#创建存储复数类型的列表
complexdata = [64.375-1.27j,12.73-875J,0.026-0j];
#删除列表的最后一元元素
del complexdata[2];
print(complexdata);
#创建嵌套列表
score = ['张明',[96,85,92],'赵虎',[98,89,100]];
#删除列表的第2个元素
del score[1]
print(score);
#删除student列表
del student;
print(student)

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

image.png


从输出结果可以看出,用del方法删除student列表后,再执行print方法输出student列表时,程序会报错。

使用remove方法删除列表元素

remove方法是列表提供的内置方法,使用remove方法可以删除列表中与指定内容相匹配的第一项元素。

remove删除列表元素的语法为:

dataList.remove(obj)

其中,dataList为列表变量名称,remove为列表方法,参数obj为指定的内容(如字符串、数值等对象)。

例7:使用remove方法删除列表元素的例子

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

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

image.png


使用pop方法移除列表元素

pop方法是列表提供的内置删除方法,使用方式和del方式相同,不同的是pop在删除元素的同时,会返回该元素的值。

例8:使用pop方法删除列表元素的例子

#创建存储字符串类型的列表
student = ['张明',"赵虎","马汉","李云龙","王义"];
#删除第1个列表元素
obj = student.pop(1);
#输出列表student
print(student);
#输出obj元素
print(obj);

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

image.png


5、  列表的排序和比较


在实际应用中,经常需要对列表进行排序。Python提供了列表的内置函数sort方法和通用函数sorted方法对列表进行排序。

使用列表内置的sort方法进行排序

列表的内置方法sort用于对列表进行排序,排序完成后,列表内的元素顺序被改变。其默认排序规则是,如果列表中的元素都是数字,按照从小到大升序排序;如果元素都是字符串,则会按照字符表顺序升序排序。sort方法语法如下:

list.sort(key=None, reverse=False)

其中,key为可选函数参数,该函数主要用来指定进行比较的元素,元素取自于待排序列表中的前两个元素,函数只能返回一个元素。reverse是一个布尔值,如果设置为True,列表元素将被倒序排列,默认为False。

例9:使用sort方法进行列表排序

#创建存储字符串类型的列表
student = ['have',"not","like","at","bike"];
#排序列表,升序排列
student.sort();
print(student);
#初始化student列表
tupletab = [(2, 2), (3, 4), (4, 1), (1, 3),(5, 6)]
print(tupletab);
# 定义函数,获取列表的第二个元素
def takeSecond(elem):
    return elem[1];
tupletab.sort(key=takeSecond);
print(tupletab);

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

image.png


使用通用函数sorted方法进行排序

sorted方法是Python语言提供的适用于可迭代数据类型的排序方法。使用方法和list的sort方法相同,唯一不同的是sorted方法不改变原列表元素的顺序,而是返回一个排序后的列表。

例10:使用sorted方法进行列表排序

#创建存储字符串类型的列表
student = ['have',"not","like","at","bike"];
#排序列表,升序排列
studentsorted = sorted(student);
print(student);
print(studentsorted);
#初始化student列表
tupletab = [(2, 2), (3, 4), (4, 1), (1, 3),(5, 6)]
# 定义函数,获取列表的第二个元素
def takeSecond(elem):
    return elem[1];
tupletabsorted= sorted(tupletab,key=takeSecond);
print(tupletab);
print(tupletabsorted);

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

image.png


求列表的最大值和最小值

Python语言也提供了对可迭代数据类型求最大值和最小值的方法,求最大值的方法为max,求最小值的方法为min。

例11:求列表的最大值和最小值的例子

#创建存储字符串类型的列表
student = ['张明',"赵虎","马汉","李云龙","王义"];
#输出最大值和最小值
print("最大值:" + max(student) +  "   最小值:" + min(student));
#创建存储浮点型的列表
sealdata = [128.92,65.90,13809.1,79.689,0.23,127.00];
#输出最大值和最小值
print("最大值:%.2f:最小值:%.2f" % (max(sealdata),min(sealdata)));

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

image.png


6、  遍历列表元素


在Pyhton语言中,遍历列表一般使用for循环语句,根据取值方式的不同,又分为三种遍历方式。

例12:列表元素的三种遍历方式

#创建存储字符串类型的列表
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))

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

image.png



7、  列表的成员关系操作


在列表操作中,成员操作符“in”和“not in”用于判断一个对象的值是否出现或不出现在列表中,出现返回True,否则返回False。

例13:成员关系操作例子

#创建存储字符串类型的列表
student = ['张明',"赵虎","马汉","李云龙","王义"];
#判断张明是否在列表中
print("张明" in student);
#判断李新是否在列表中
print("李新" in student);
#创建存储浮点型的列表
sealdata = [128.92,65.90,13809.1,79.689,0.23,127.00];
#判断65.90是否不在列表中
print(65.90 not in sealdata);

课程小结

在Python语言中,声明一个列表并赋值非常简单。列表元素用方括号[]括起来,元素之间用英文逗号分隔。访问列表元素可以使用“[]”和“[:]”访问运算符,用于访问列表中的单个数据项,或者一个子列表。删除指定位置或范围的列表元素可以使用del方法,del方法也可以删除整个列表。如需要删除匹配元素内容的数据项,可以使用列表的remove方法,也可以使用pop方法移除列表中的一个元素。

在实际应用中,经常需要对列表进行排序。Python提供了列表的内置函数sort方法和通用函数sorted方法对列表进行排序。默认排序规则是,如果列表中的元素都是数字,按照从小到大升序排序;如果元素都是字符串,则会按照字符表顺序升序排序。

遍历列表元素主要有三种方式,都是采用for循环语句,主要方法是元素迭代、指定索引范围、枚举。

 


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

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

评论区

登录 后发表评论
暂无评论