《中小学生Python编程入门指南》3.3 列表

3.3 列表

    书接上回哈,上一节最后我们提到了数组,在Python里称为列表,英文为list,也就是很多编程语言里面的数组(数组英文为array)。列表的表达形式很简单,外面一层是中括号[],里面由多个元素组成,元素之间用中括号隔开。列表跟字符串 一样,每个元素有对应的索引值,索引值从0开始,接着是1,依次类推。
list1 = ['小明', 'abc', '123', 'abc']
list2 = [1, 2, 3, 4, 5]
list3 = ['NetEase', 'ICBC', 2020, 1994]
    在很多编程语言里,数组内的元素必须是类型统一,只能有一种类型,但是Python不一样,Python列表是允许多种类型同时存在于列表内的。而且列表是允许被print()打印出来的。
    列表可以通过索引值直接访问改值,可以直接修改。示例如下:
    一般我们都会以“增删查改”的角度去看如何使用,上面的例子其实已经告诉了我们“查”和“改”两种了。那么“增”?列表是如何新增的。
我们可以看到,如果一个列表的长度只有4个(最后一个索引值为3),那么直接新增一个索引值进行赋值是会报错的。我们是需要使用append()函数来添加一个元素在最后。
上面例子可以看到,我们成功添加了一个元素在最后,用len() 函数我们就能看到长度已经变成了5。除了在最后添加一个元素,Python原生支持了在任意位置插入元素,很多更为底层的计算机语言不一定支持。如下所示:
使用insert()函数就可以在指定的索引值地方添加我们想要添加的元素。第一个参数是索引值、第二个参数是要插入的对象。
    
    列表的删除有很多函数可以操作,比如我们可以直接用del,如以下例子:
对元素进行“jing'zhu精准打击”。
也可以用函数remove()和pop()
如以下例子使用remove()函数:
remove()函数可以移除列表中某个值的第一个匹配项,我们看上面的例子,移除的只有第一个匹配项。
下面例子我们看怎么用pop(),pop这个词很有意思,中文是突然或匆匆的去。
我们通过上面例子就可以知道为什么已经有了remove还要有pop,因为remove函数主要是为了移除列表的一个函数,而pop函数主要是为了获取列表移除处理的这里元素,我们看例子可以知道pop函数是有返回值的,返回的是被移除的这个元素,这就是我们所谓的“ 出栈”。什么是栈?我们这一节的最后补充说明一下。现在先把列表的内容说完。
    增删查改我们说完了,还有什么需要注意的?那就是排序的问题,在底层语言里,比较重视针对性的效率提升优化,所以排序是需要根据不同场景进行不同的算法优化的,高级语言如Python,比较重视的是编程逻辑实现,所以已经提供了现有的排序函数,sourt()函数。使用方法如下:
sort()函数默认是升序,如果在里面使用参数reverse = True,我们就可以将排序改为降序。排序是十分常用的,比如我们写一个脚本用来给同学做成绩排名,排序就能用到了。sourt函数的完整表达式是
list.sort( key=None, reverse=False)
我们能看到有两个参数,还有一个参数是key,这个key有什么用,我们下节学到字典的内容我们再结合例子说一下。列表的函数还有很多,这里不一一列举了,就说这些常用的就够了。


    下面我们说一下什么是栈。栈又名是堆栈,但是“堆”又是另一种数据结构上的概念了,栈的英文是 stack,堆的英文是heap,还是翻译的问题,换成英文就知道是不同概念了。其实如果说栈是一种只允许一段插入和删除数据的特殊线性表,我觉得这样解释应该很难懂。其实栈就是一种数据结构,可以用一个长方形没有盖子的盒子来理解, 而栈里面的数据就只能通过这个盒子唯一的入口来放进去和放出来。我们假设有一些数据准备要放进去这个栈里面,如下图:
    将数据放入这个栈里,我们先随便放几个进去:
这个时候,如果数据D想要出来,那就得将F拿出来,D才能出来
如果数据想要进去,数据C就只能在数据F上面
如果这个时候数据D还想要出来,那就得先将C拿出来,再将F拿出来,才能把D拿出来。
这样应该能理解栈是什么了吧,就是只有一个出入口的数据结构,先进去的后出来,后进去的先出来,我们有一个通用的代称是“FILO”(first in last out)。栈的数据出去叫做“出栈”(退栈),进数据叫做“入栈”(进栈),栈的最后一个数据,也就是最顶部称为“栈顶”,相对的最底部的数据叫做“栈底”。一般设计入栈的函数为push(),出栈的函数为pop()。我们理解栈是什么就可以,如果要设计一个栈的话,思路一般就是设计创造一个栈,push()函数、pop()函数、empty()函数用来判断栈是否是空的、size()函数判断栈的大小、还有栈指针的位置等函数和属性,有兴趣自行上网查找即可,我们这里不新增章节的复杂性了。
    



转载请注明来源: https://www.cnblogs.com/sunshinesky/

猜你喜欢

转载自www.cnblogs.com/sunshinesky/p/12392680.html