数据结构论坛

首页 » 分类 » 定义 » python基础课程第7章列表合纵连横
TUhjnbcbe - 2023/10/20 8:10:00
北京哪里专业治疗白癜风的医院 https://jbk.39.net/yiyuanfengcai/yyjs_bjzkbdfyy/
列表,英文名list,小名(清单、序列、数组、一堆,一坨)等等。在本章教程写下列表这个开头时,我大脑里出现的是先秦时期苏秦、张仪两位战国人物一手主导的合纵联横的故事。凭借书生一张嘴,让当时华夏大地上各诸侯国各种聚合结盟,相互合作又相互斗争。特别是苏秦这位战国有名嘴炮大王身背六国相印,一时权柄无量。如果把每个国家比如成计算机世界里一个元素的话,那么苏秦和张仪相当于创建了很多个列表,把不同的国家作为不同的元素装在这些列表里,根据情况,要么合纵要么连横。这两位先生如果学了编程,估计也是两个好程序员。每天可以在电脑上模拟他们心里的各种战略胜败率了,甚至可以来个结对编程,相互找个BUG什么的,当然头发就没那么长了,容易早秃,显得不够仙风道骨。本章知识点:列表的概念列表的基本操作列表的常用方法列表的概念首先我们来看看如何创建一个列表,在python里它叫列表,在别的语言里可能叫数组。大家目前暂且理解这两个是一个东西,只是在python中它被习惯性成为列表。list_zhanguo=[齐,楚,燕,赵,魏,韩,秦]时隔20多年,我再一次用以前初中历史课上自创的口诀快速写出了战国七雄的国家名字,这个口诀就是:“气出烟,赵薇喊亲”。现在我们对战国七雄这个列表(list_a)做一个点名,盘点一下我们的元素。在以上三行代码里,我想循环这个语句大家在上一章python基础课程第6章循环(无尽的任务)应该已经学过了,理解起来比较容易,我们对list_a这个列表做一次循环,然后依次打印每一个元素的信息。在这里需要讲两个概念:python的列表(数组)是有序的。列表里的元素可以是任意数据类型,甚至是一个函数或者类。元素的有序性先来说说有序的这个概念,为什么列表是有序的呢,我们注意到我们打印列表里每个元素的信息时,它是按照我们定义列表时填写的数据顺序来的。那么它的顺序是如何体现出来的呢?我们用个例子来证明。我们通过以上例子发现,程序做了两个改动。一是把list_a这个用enumerate内置函数进行了调用。二是for循环里多了一个key这个变量,并且打印出来。至此,我们看到的结果就是带着元素索引(可以理解索引就是序号)的信息0到6,一共7个数字,以及分别对应每个数字的元素内容。enumerate这个内置函数之前我们没讲到,它的作用是对一个列表进行包装,生成出一个带着元素索引的对象。对这个对象做循环时,每一次循环会得到一个tuple(元组),元组的信息包含(索引,元素内容)。在这里详细展开了。举这个例子主要是为了说明列表的是有序的。列表里的元素类型严格来说,列表里元素类型都是对象,而对象在python中号称万物皆对象,于是逻辑就变成了列表里的元素可以是任意数据类型,当然也包括函数或者类这些高级货色。我们来举个例子。这一次,列表里多出了三个东西(一个列表、一个函数、一个类),关于类的内容我们将在后面的章节讲到。用这个例子顺便也可以说明列表里可以包含无数层列表,只要我们分得清数据在那一层就行。访问列表里的值list_a[索引位置],这个语法可以用来按照索引位置访问列表里的元素信息。相当于我们上课老师按学号点名:“38号,”你站起来说:“到”,一个意思。在这里我们可以看到,我向列表说,把索引为5的元素找出来给我。于是它把韩国给我找出来了。关于索引数字为什么从0开始这个我就不解释了,在本教程第0章时已经讲过。如果我们访问一个索引不存在的元素时,会有什么结果呢?嗯,不出所料报错了,提示列表索引超出了范围,我们一般称为下标越界或者索引越界。那么我们来一个负数的索引呢?会报错吗?有人会咦,你这玩意不讲理啊,为什么负不报错呢?还给我打印一个“秦”出来。这是源于python的一个特性,它允许我们用负数索引来访问一个序列的信息。范围是-1到序列的负长度,对于list_a这个变量来说,也就是-1到-7,如果是-8或者更大的负数,同样会报错的。那么这个负数的索引具体怎么取值呢?我们说list_a[0]是什么元素?齐。这个时候我们可以把这个列表假想成一个圆环,或者是一条头和尾巴连在一块的贪食蛇。那么索引0的上一个元素-1指向的内容就是“秦”了,以此类推吧。注意:这个负数索引的特性在别的语言中不见得能适用,会报错。python的负数索引主要是为了切片方便,下面我来秀一下它的切片操作。在这里我们可以看到,我们用python切片的语法把七个国家的顺序做了一个颠倒,至于为什么会这样,我们留到以后的章节来说,在这里只是为了给大家证明python语法的强大,灵活以及想象力。添加列表信息添加列表信息通常有两种手法,一是往已有的列表中追加一个元素,二是把一个新的列表直接追加到老的列表上。列表名.append(元素信息)这个语法用于向列表的末尾追加一个元素。你们看,战国七雄里混进去了一个弟弟。合并列表现在我们假设秦始皇把别的部落也纳入进联盟了,想直接合并进来,怎么办呢?列表名.extend(其他列表)这个语法用于向列表末尾追加一个新的列表修改列表信息现在我们统一了六国和其他势力,原来的国家的名字都应该改成秦国领土,该怎么做呢?好吧,挨个改名真麻烦,让我们来用循环减少秦始皇的工作量。通过以上代码我们注意到,当我们要修改列表里元素的信息时,同样需要通过索引访问到具体的元素,然后给它赋值即可。删除列表信息这个战略游戏现在玩通过了一切索然无味进入了贤者时间,于是我们想学习灭霸把这一切都清除掉,该怎么做呢?列表名.remove(元素值)用于删除根据值查找到到列表中的第一个元素,列表的元素数量会减少,索引会从新计算。列表名.pop(索引位置)用于删除根据索引位置删除列表中的一个元素,列表的元素数量会减少,索引会从新计算。现在我们觉得挨个remove或者pop太麻烦。机智的你一定想到用循环怎么清理了吧?看看下面的代码和运行结果是不是你想要的结果?如有疑问,欢迎思考并向我提出。其实我们还可以直接对列表重新赋值,以便于清空这个列表的信息。list_a=[]即可总结为什么用合纵连横来比如列表呢,我们想象一下列表的各种使用场景。对两个列表进行分析,找出其中相同的部分和不同的部分,可以用于数据的分析整合。设计一个小游戏,包含两组玩家,每组玩家5人,每个玩家都有自身的攻击和防御值。用两个列表存储他们。进行团战时,程序计算双方各自的数值并得出战斗结果。打开一篇文章,把每一行内容作为列表的一个元素存储到内存里,以便于在任何时候进行调用。设计一个任务清单,清单里的元素就是每天要完成的事情,完成一件就remove一件,新增一件就append一件。关于列表的基本概念和操作我们暂时讲到这里,在python语言中,列表是一个非常重要的数据结构,也是我们写程序的必备要素之一,大家理解消化本章内容后,我们将在以后的章节里讲解列表的更多列表的用法。
1
查看完整版本: python基础课程第7章列表合纵连横