第5章Python数据结构
列表假如要设计程序计算用户输入的3个数的平均数,可以在程序中编写3个变量来存储这3个数值,并计算其平均值。但是,假如要计算的数有100个、1000个甚至更多个呢?在程序中手动创建这么多的变量并进行运算是不切实际的。因此,Python使用列表来存储这些数据。
列表的基本操作程序经常需要存储大量的值。Python提供了一种被称为列表的数据结构来存储任意大小的数据集合。列表提供了一种高效且有条理的方式来管理数据。Python中的列表类似于C语言中的数组概念,一个列表中可以包含任意个数据,每一个数据称为元素。Python允许同一个列表中元素的数据类型不同,可以是整数、字符串等基本类型,也可以是列表、集合及其他自定义类型的对象。
创建列表创建一个列表的最简单方法是将列表元素放在一对方括号(“[”和“]”)内并以逗号分隔,并用赋值运算符将一个列表赋值给变量。例如:
list1=[]
list2=[2,3,4]
list3=[red,green,blue]
创建列表列表通过Python内置的list类定义。也可以使用list类的构造函数来创建列表。使用这种方法可以将元组、字符串或其他类型的可迭代对象类型的数据转换为列表。例如:
Python中的列表可以包括不同类型的元素。例如:list6=[1,Hello,3.14]
列表还可以使用以下的方法进行初始化:list7=[0]*100
这条语句将创建一个长度为100的列表,且每个元素都被初始化为0。事实上,这条语句应用的是列表的乘法运算.list1=list()
list2=list([2,3,4])
list3=list([red,green,blue])
list4=list(range(2,7))
list5=list(Hello)
下标访问元素(正向)列表中的元素可以通过下标运算符来访问,语法如下:list[index]和C语言等高级语言相同,列表的下标是从0开始的。如果一个列表的长度为r,则合法的下标在0到r-1之间。例如,定义列表myList如下:myList=[1,2,3,4,5]则myList[0]的值为1,myList[4]的值为5。如果在程序中试图访问下标大于4的元素,会导致一个运行IndexError。list[index]可以像变量一样使用,可以进行读取或写入,所以它也被称为下标变量。例如,下面的代码将列表中的myList[0]和myList[1]相加后的结果存储在myList[2]中:myList[2]=myList[0]+myList[1]
下标访问元素(逆向)Python也允许使用附属作为下表来引用相对于列表末端的位置。例如,myList[-3]表示列表倒数第三个元素。特别地,使用myList[-0]与使用myList[0]相同。
列表的拼接和复制在Python中,可以使用运算符“+”来连接两个列表,并返回一个新列表。例如:
list1=[1,2]
list2=[3,4]
list3=list1+list2
此时,list3中存储的内容为[1,2,3,4]。使用运算符“*”可以将一个列表复制若干次后形成一个新的列表。例如:
list1=[1,2]
list2=list1*3
此时,list2中存储的内容为[1,2,1,2,1,2]。注意,list1*3和3*list1相同。
列表的遍历对列表内的每个元素均做一次访问称为对列表的一次遍历。前面已经介绍过使用下标访问列表元素的方法,通过while循环依次访问列表的各个下标就可以实现对列表的一次访问。下面的例子展示了使用while循环如何进行列表遍历并输出列表中的所有元素。其中,len()函数是Python的内置函数,它返回列表的大小。也可以使用for循环来实现列表的遍历,这样就可以在不使用下标变量的情况下顺序遍历列表。下面的代码使用for循环来遍历并打印列表中的元素。通过灵活地运用循环结构,可以以不同的方式来访问列表中的元素。例如,下面的代码输出列表中所有偶数下标的元素。
for方法foriinlist:print(i)While方法i=0while(ilen(list)):print(list[i])i+=1
是否存在列表中in/notin运算符
使用in/notin运算符可以判断一个元素是否在列表中。例如,列表myList包含的元素为[2,3,5,7],变量val的值为4,那么表达式valinmyList的返回值为False,而表达式valnotinmyList的