目录
一、Python中的列表
1、列表的定义和赋值
2、列表的使用
二、列表的“增删改查”
1、列表中元素的增加
A、在列表尾添加元素
B、在列表中插入元素
2、列表中“元素的删除”
A、使用del语句删除元素
B、使用pop()函数删除元素
C、弹出列表中任何位置元素
D、根据值删除元素
3、列表中“元素的修改”
一、Python中的列表
1、列表的定义和赋值
Python中的列表本质上和C语言中的数组类似,如果你学过C语言,那么在理解这一概念时,就没有难度了。Python中的列表能够让你在一个地方存储成组的信息,可以说,这个是新手直接使用的最强大的功能之一了。(不是我说的,是某本Python书说的,不关我的事)
列表定义:由一系列按特定顺序排列的元素组成,其中的元素之间可以没有任何关系。初学者可以将列表理解为一个“箱子”,这个箱子什么都可以装,但是得有顺序。
列表形式:用方括号“[ ]”来表示列表,并用逗号来分割其中的元素。例如:
people=['uncle','father','mother','grandmother','teacher']
print(people)
注意到上图中的输出,没学过编程语言的人可不希望看到有方括号的出现,那么此时要想按照“常理”输出的话,就得访问列表元素了。说白了,其实就是要告诉计算机你要操作的元素在哪?
前面我们介绍了“列表是有序集合”,因此要访问列表的任何元素,只需将该元素的位置或索引告诉Python解释器即可。刚才也提到Python程序就像我们的“新家”一样,有很多“箱子”,那么要想访问准确,就得说出箱子名称,也就是“列表名称”和“该元素在列表中的位置”.如下代码所示:
people=['uncle','father','mother','grandmother','teacher']#定义列表
print(people[1])#输出位置为1的元素
print(people[1].title())#输出的单词开头大写
print(people[1].upper())#输出的单词大写
print(people[1].lower())#输出的单词小写,用了前面学的字符串函数,温故知新!
通过观察可以看出,Python中列表的“索引”不是从“1”开始的,而是从“0”开始的,这和其他编程语言是相同的,例如C语言中的数组下标。另外,Python还为访问最后一个列表元素提供了一种特殊语法,我这里称为“负索引法”:列表下标是“-1”,则访问列表倒数第一个元素;列表下标是“-2”,则访问列表倒数第二个元素;以此类推!当列表为空时,这种访问最后一个元素的方式会导致错误。
至此列表的定义和赋值就结束了。
2、列表的使用
列表的使用很简单,我们用两行代码来说明:
people=['uncle','father','mother','grandmother','teacher']#定义列表
messgae=people[2]+" "+"is "+people[1]+"'s "+"wife"
print(messgae.title())
二、列表的“增删改查”
列表是变量的集合,可以说是一个“大变量”。既然是变量,那么它就会随着程序的运行等进行变化。那么,这就涉及到列表的增删改查了!“查”其实就是上面介绍的访问的意思。能访问,说明存在;不能,则说明不存在。这里只是按照数据库管理的术语命名标题了!
1、列表中元素的增加
列表增加的方法有以下2种:在列表尾添加元素,在列表中插入元素。
A、在列表尾添加元素
这是最简单的方式了,用代码说明:
people=['uncle','father','mother','grandmother','teacher']#定义列表
people.append("wife")#用append()方法将元素“wife”添加到列表末尾,并且不影响列表其他元素。
print(people)
函数append(),可以很方便的在列表末尾添加元素,这就可以动态的创建列表了。所谓“动态”,是指可以先定义一个空的列表,再使用若干append()语句往列表里添加元素,例如下面一段程序:
people_1=[]#定义列表1
people_2=['uncle','father','mother','grandmother','teacher','wife']#定义列表2
people_1.append('uncle')
people_1.append('father')
people_1.append('mother')
people_1.append('grandmother')
people_1.append('teacher')
people_1.append("wife")
print(people_1)
print(people_2)
这种动态添加元素的方法很常用,在写代码的时候,不知道列表中该存储哪些数据,但是随着程序的编写,以上内容逐渐明了,则可以使用append(),为列表“添砖加瓦”。
B、在列表中插入元素
插入的英文单词“insert”,则是“在列表中插入元素的”函数名。与“向列表末尾添加元素”不同,一个列表只有一个末尾,即前者添加元素的位置是确定的,但是后者要在列表任意位置添加元素。由此,我们在使用本方法时,除了要说明添加的具体元素是什么外,还需指明添加的位置。例如:
people_2=['uncle','father','mother','grandmother','teacher','wife']#定义列表2
print(people_2)
people_2.insert(3,"grandfather")
print(people_2)
插入详解:函数insert()在位置3处添加空间,将“grandfather”存储到这个新的空间,并将之后所有的元素右移一个位置!
2、列表中“元素的删除”
删除列表元素的方法有四种。
A、使用del语句删除元素
如果知道要删除的元素在列表中的位置,则可以用del语句删除元素。代码举例:
people_2=['uncle','father','mother','grandmother','teacher','wife']#定义列表2
print(people_2)
del people_2[1]
print(people_2)
del people_2[1]
print(people_2)
在上述示例中,一旦使用del语句删除列表中的元素,用户就无法访问了。
B、使用pop()函数删除元素
学过C语言的同学可能对这个函数不陌生,因为在栈的操作中有这么一个函数,用于将栈顶元素弹出栈!。而在Python中,可以将列表类比成一个栈(给没学过C语言的科普一下“栈”这个名词:栈就像一个水杯(只有一个口),有一定的大小,里面可以装“元素”,遵循“先进后出”的原则,即如果把所有元素都“入栈”,再“出栈”,那么最先进入的元素,在出栈时,总是最后出来。)在Python中,此方法的默认效果就是:删除栈顶元素。对应到列表中,就是删除列表表尾元素。
而本方法适用于:要将元素从列表中删除,但是还要接着使用它的值。(我个人感觉pop()方法只能是称之为移除,因为在使用本方法时,在大多数情况下,只是把某个元素用另一个变量保存起来)例如,你在CF中杀死一名敌人,那么游戏系统就需要将其从本轮游戏存活者的名单中删掉,同时还需要使用这名敌人的名字,并在消息栏中显示“XXX被你击毙”的消息。
用代码说明:
people_2=['uncle','father','mother','grandmother','teacher','wife']#定义列表2
print(people_2)#打印列表2
poped_1=people_2.pop()#删除列表表尾元素,并将其赋值给poped_1
print(people_2)#打印列表2,显示原表尾元素已被删除
print(poped_1)#打印弹出的元素,表明可以使用
C、弹出列表中任何位置元素
在尝试B方法删除元素时,细心的同学可能就会发现,可以在pop()函数的括号里加上参数。那么这个参数就可以写成是列表元素的位置,从而达到“弹出列表中任何位置元素”的目的。
代码说明:
people_2=['uncle','father','mother','grandmother','teacher','wife']#定义列表2
print(people_2)#打印列表2
poped_1=people_2.pop(1)#删除列表位置1上的元素,并将其赋值给poped_1
print(people_2)#打印列表2,显示原表位置为1的元素已被删除
print(poped_1)#打印弹出的元素
以上三种方法大致可以归类为“在知道元素位置的情况下而进行的删除操作”,那么该如何选择删除方法呢?就看你在从列表中删除某一元素后,是否还要使用该元素。使用,则选择pop();永不再用,选择del语句。
D、根据值删除元素
在未知待删元素位置的情况下,仅凭待删元素的值,也可使用remove()函数完成删除操作。当然,此种方法删除的元素依然可以在使用,只要提前“备份”。这里需要注意的是:函数remove()只删除第一个指定的值。如果要删除的值可能在列表中出现多次,就需要使用循环结构来判断是否删除了所有这样的值。
代码举例:
people_2=['uncle','father','mother','grandmother','teacher','wife']#定义列表2
print(people_2)#打印列表2
people_2.remove('teacher')
print(people_2)#打印列表2,表明删除成功
对比学习,可以使我们的印象深刻:
people_2=['uncle','father','mother','grandmother','teacher','wife']#定义列表2
print(people_2)#打印列表2,显示当前列表有的元素,与下文删除元素后做对比
beifen_1=people_2[0]#也可以是beifen_1="uncle"
#使用A方法删除列表任意元素
del people_2[0]#删除元素
print(people_2)#打印目前列表中的所有元素
print(beifen_1)#打印备份1中的元素
people_2.insert(0,beifen_1)#把刚才删除的元素再补充回去,方便使用另一种删除方法
print("\n")#使用B方法删除列表表尾元素
print(people_2)#打印列表2,显示当前列表有的元素,与下文删除元素后做对比
beifen_1=people_2.pop()#备份删除的元素,同时删除元素
print(people_2)#打印目前列表中的所有元素
print(beifen_1)#显示删除的元素
people_2.append(beifen_1)#把刚才删除的元素再补充回去,方便使用另一种删除方法
print("\n")#使用C方法删除列表任意元素
print(people_2)#打印列表2,显示当前列表有的元素,与下文删除元素后做对比
beifen_1=people_2.pop(0)#备份删除的元素,同时删除该元素
print(people_2)#打印目前列表中的所有元素
print(beifen_1)#显示删除的元素
people_2.insert(0,beifen_1)
print("\n")#使用D方法删除列表任意元素
print(people_2)#打印列表2,显示当前列表有的元素,与下文删除元素后做对比
beifen_1="mother"#备份删除的元素
people_2.remove("mother")
print(people_2)#打印目前列表中的所有元素
print(beifen_1)#显示删除的元素
people_2.insert(0,"mother")
print("\n")#是否可以单独使用pop()函数?
print(people_2)#打印列表2,显示当前列表有的元素,与下文删除元素后做对比
people_2.pop(0)#删除表首元素
print(people_2)#显示当前列表元素
删除方法小结:
从上面一段综合代码可以看出,删除列表中某元素时,是需要一定信息的:该元素是什么或者该元素位于列表的哪个位置。既然知道这些信息,那么我们完全可以定义一个变量,将要删除的元素备份起来,再执行删除。也就是说,以上删除语句在我个人看来是一样的功能“将列表中的某一元素删除”,而不用区别到底该使用哪种方法。以上在介绍各个方法时,也只是便于大家区分和识记。根本不需要根据“删除的元素是否要再次使用而选择调用哪个删除语句”
3、列表中“元素的修改”
修改列表中的元素与访问列表元素类似。要修改列表元素,就得指定列表名、要修改元素的位置以及该元素的新值。
代码说明:
people_2=['uncle','father','mother','grandmother','teacher','wife']#定义列表2
print(people_2)
people_2[0]="policeman"#修改语句
print(people_2)
元素的修改其实就是列表元素的再一次赋值!