当前课程知识点:Python 交互式程序设计导论 > 第5周 > A 课程视频(鼠标输入、列表进阶) > Video
返回《Python 交互式程序设计导论》慕课在线视频课程列表
各位同学大家好,欢迎回到python交互式程序设计课程中
上一周,我们一起学习了一种非常重要的数据类型——列表
介绍了列表的基本概念
列表与我们在初等数学中学过的数组概念的区别,以及列表的基本操作
在本周我们将继续深入学习列表的使用方法, 重点是列表的常用方法
下面我们开始今天的内容
什么叫列表的方法,注意,这里的方法并不是我们通常意义上方法的概念
它实际上是指,面向对象理论的一个基本概念
下周,同学们将系统的学习面向对象理论,
在这里,同学们只要知道, 方法是指列表这个数据类型提供的一种操作功能
我们可以利用这些方法,来完成很多丰富的功能
这节课我会用示例的方法,给大家来介绍这些常用方法
于是,我首先需要定义3个列表作为我们的操作对象
分别是lst1,lst2,lst3
其中lst1,lst2都有4个元素,而lst3是个空列表
我们首先学习的是如何在列表当中增加元素
我们来看,第一个,追加一个元素,
调用的方法是append,append作为英文的原意就是追加的意思,
我们来看原先lst1里边包含4个元素,[1,3,5,7]
经过调用append方法,参数是9,
我们用print语句对它进行输出,
结果大家看,是[1,3,5,7,9]
所谓的append会自动把元素追加在列表的末尾
除了一个数可以作为元素以外
我们可以创建一个新的列表作为元素,
传入或者追加到lst1当中
我们来看一下
lst1. append([11,13]), 显然[11,13]本身就是一个列表
它作为一个元素,被追加到lst1当中
所以我们输出以后,大家可以看到这样一个效果[1,3,5,7,9, [11,13]]
那么大家应该还记得,列表当中的元素类型可以是不一致的
大家看,此时lst1当中有几个元素,1,2,3,4,5,6, 一共6个元素
好,不能把它拆开,因为它是一个整体作为一个元素被追加,
好,下面,插入元素
所谓的插入元素与追加元素,有一个很明显的区别
就是插入的位置可以指定,而追加只能在列表的尾部
所以大家请看,
对lst2进行insert这个方法的调用的时候,
我们有2个参数,第一个参数是位置, 第二个参数是你要插入的元素
原来lst2当中有4个元素,分别是[2,4,6,8]
经过这样一个insert的方法的执行,
用print语句对它进行输出
大家可以看到,结果是[2,10,4,6,8]
也就是说把10插入了2和4之间
同学们还记得,list元素的位置信息,它是从0开始的
所以,2这个位置是0,2和4之间这个位置是1
所以执行了insert(1,10),自然会被插入到2之后
这个大家需要注意一下,
讲完了如何增加一个元素,自然会讲到移除元素
移除元素,list也提供了两个非常好用的方法
一个是remove,一个是pop,我们来看一下
经过上一步增加元素的操作之后,
lst1变成了[1,3,5,7,9,[11,13]]
而lst2变成了[2,10,4,6,8]
好,我们来看
如果此时,list调用了remove方法,
remove(9),返回的结果是多少呢?
用print语句输出一下
变成了[1,3,5,7,[11,13]]
remove()方法会直接移除你所指定的那个元素
比如说你在这指定9,所以在lst1当中就会把9删除
剩下的就是[1,3,5,7,[11,13]]
那么再看,如果我移除的元素在列表当中没有, 会发生什么事情呢
会报一个错,大家看一下
lst1. remove(11),lst1此时当中有11吗?显然是没有的
因为最后这是一个整体
好,大家注意一下
所以是没有11的
这个时候它会报出一个ValueError:
list调用remove()这个方法,而x在列表当中是not,不存在的
所以,此时会报错
好,我们再来看pop()方法,这个方法呢,也非常常用
我们来看,lst1调用pop()方法,里边不需要跟参数
它会自动把最后一个元素删除,
好,大家来看,最后一个元素是什么呢?
是[1,3,5,7,[11,13]], 这个时候对它进行pop()这个方法的调用
会自动移除[11,13]这个元素
剩下的就是[1,3,5,7],输出以后就是[1,3,5,7]这个结果
那么对lst2进行pop(1),那么这个1,大家注意,不是元素本身
而是元素的位置
也就是说你要移除的是哪个位置上的元素
1显然对应的是10这个位置
所以输出以后,结果是[2 ,4,6,8]
注意,我再强调,这里的这个参数是它的位置, 而不是元素本身
remove()里面的这个参数是元素本身,不是位置
好,请大家注意
好,我们再来看,第三类方法是扩展一个列表
方法名是extend,在英文当中它的原意也是这个
我们来看一下, lst3. extend(),在我们第一张幻灯片当中,
我们定义lst3是一个空列表, 这个时候我们调用它的extend()方法
括号里面一个参数,注意这个参数是列表类型的,lst1
好,这个时候呢,实际上是把lst1的元素扩充到lst3当中
当然我在这没有输出,我又执行了一个扩充语句,大家看
lst3又 extend(‘ab’), 前面一个单引号,后面一个单引号
很显然这是一个字符串类型
好,经过两次扩充以后我输出,看结果
第一句话执行完,它会把lst1当中的1,3,5,7扩充到lst3当中
那么经过第二条语句,它会把这个字符串拆开,
按照字符一个一个扩充到lst3当中
所以呢经过两次扩充, lst3变成了这样一个列表[1,3,5,7,’a’,’b’]
大家注意,再次强调,list当中元素类型可以不一致
所以这既有字符,又有整数类型
然后我们在这基础上, 又执行了lst3. extend(),进行第三次扩充
扩充的内容是[9,11],结果是多少呢,大家看
[1,3,5,7,’a’,’b’,9,11]
换句话说,用extend()扩展列表, 它会把元素,如果它是一个序列的话
它会把元素拆开,一个一个追加到lst3当中
大家注意,这个时候9和11就不是整体了,它实际上是被拆开了
就像前面的’ab’一样,它不是作为一个整体的字符串, 而是被拆成’a’,’b’两个字符
所以extend()这个方法,注意, 它的参数是一个序列,列表,或者是字符串
下面,我们来学习列表的翻转这个方法reverse(),
我们来看,经过上述的执行步骤, lst1这个时候已经变成了[1,3,5,7]
lst3变成了[1,3,5,7,’a’,’b’,9,11]
我们再来执行lst1. reverse()这个方法,
大家看,没有参数,实际上它会自动把lst1中的元素进行翻转
输出一下,变成了[7,5,3,1]
大家注意是翻转,而不是逆序, 它会把原来的最后一个放在第一个
倒数第二个放在第二个,倒数第三个放在第三个,依次类推
然后我们对lst3也进行翻转,大家看
输出结果是多少,[11,9,’b’,’a’,7,5,3,1]
大家注意,翻转就是在原来的基础之上颠倒所有元素的顺序
下面,我们来看列表的排序,排序的方法名是sort(),
sort()里面也没有带任何的参数,
实际上它是按照一定的顺序对list当中的元素进行排列
好,我们来看一下
经过翻转以后的list实际上已经变成了[7,5,3,1]这样一个顺序
然后然后我们用lst1.sort()可以把它自动按照升序排列
输出以后的结果是[1,3,5,7],
好了,上边的这些方法大家在实际的编程过程中会不断地使用
用的次数多了,你就会非常熟悉
那么除此之外, 我还想给大家讲一个非常有用的这样一个列表方法
实际上在前面讲到字符串的时候,我也提到过,我们来看一下
列表和字符串有很多的转换工作, 我们在实际开发中会经常用到
比如说,在这里,s是一个字符串变量,它的值是Python
那么lst是一个列表,这个列表里面初始化的时候,
我传进去了一个字符串类型,这个时候,lst会发生什么事情呢
大家看,输出,它变成了这样一个列表
它会把你传进来的这个字符串,按字符切开, 一个一个的插入lst这个列表当中
所以你看到的结果是 [‘P’,’y’,’t’,’h’,’o’,’n’,]
这个是我们常用的一种列表的初始化的一种方法和手段
下面我们再来看这样一个例子,s1是一个字符串类型的变量
它的初值是‘欢迎来到Python世界’,我们在这个字符串当中
大家注意,‘欢迎 来到 Python世界’,实际上是按照词对它进行分割的
分割的符号是空格,因为显示不出来, 但是大家可以看到结果,间距
那么,
lst1=s1是字符串的split()方法,分割, 这个我在字符串那一章中给大家是讲过的
那么默认情况下,它是按照空格来切分的, 当然你也可以指定分隔符
这个时候呢,lst会被存入按照指定分隔符切开以后的元素
大家看,输出lst1, 显示的是[‘欢迎’,’来到’,’Python’,’世界’]
因为我用s1这个字符串变量的split()方法对它进行切分
并且用一条很简单的语句就把它存入了lst1当中
第三个例子是join()方法,这是一个字符串的方法,
但是跟list是紧密相关的,我们来讲一下
S2显然是一个字符串类型,那么来看一以下,
这是一个字符串,斜杠,字符串的join()方法,
是把lst1当中的元素连接起来,组成一个新的字符串, 赋给变量S2
再来解释一下,lst1当中有几个元素, ‘欢迎’,’来到’,’Python’,’世界’,4个
然后我们用’/’这个字符串的join()合并lst1当中的元素
并且,join前面调用的字符串’/’会自动作为分隔符
整个组合成一个新的字符串赋给S2
输出以后的结果就是欢迎/来到/Python/世界, 以’/’作为分隔符
那么总结一下,在列表的方法这部分内容当中, 我们重点介绍了列表的常用方法
包括列表增加一个元素,移除一个元素,翻转,排序,
最后重点介绍了列表和字符串的转换
在实际编程中,这都是非常常用的操作,有些同学可能会觉得
这么大量的内容,我们在短时间之内可能很难记住
但实际上,经过不断地练习,同学们很容易熟练掌握这些方法
好,今天的课就讲到这里
-课程简介
--课程简介
-A 课程视频(算数操作符及表达式)
--绪论
-B 课程视频(变量及赋值)
--变量
--项目提交
-C 辅助视频(计算机结构、Python开发环境安装)
-D 辅助视频(如何提交项目)
--项目提交
-第0周--小测验
-本周项目:"我喜欢Python"
--游戏说明
--程序说明
--编码步骤
--评分标准
--项目模板
--项目提交
-A 课程视频(函数)
--函数
--其它操作符
--随机函数
-B 课程视频(逻辑及表达式)
--逻辑值和比较
--条件
--编程技巧
-第1周--小测验
-本周项目:“老虎杠子鸡虫”游戏
--游戏说明
--程序说明
--编码步骤
--评分标准
--项目模板
-A 课程视频(Python交互式应用)
--事件驱动编程
--按钮
-B 课程视频(输入框、全局变量)
--输入框
--编程技巧
-第2周--小测验A
-第2周--小测验B
-本周项目:猫咪藏在哪个房间
--游戏说明
--程序说明
--编码步骤
--评分标准
--项目模板
-A 课程视频(画布绘图)
--画布和图形绘制
--字符串处理
--图片和音效
-B 课程视频(计时器)
--计时器
--交互式绘图
--“神奇时钟”游戏
--编程技巧
-第3周--小测验A
-第3周--小测验B
-本周项目:“神奇时钟”
--游戏说明
--程序说明
--编码步骤
--评分标准
--项目模板
-A 课程视频(列表)
--列表
--键盘输入
--碰撞和反射
-B 课程视频(键盘控制)
--速度控制
--运动
--编程技巧
--“桌上冰球”游戏
-第4周--小测验A
-第4周--小测验B
-本周项目:“桌上冰球”游戏
--游戏说明
--程序说明
--编码步骤
--评分标准
--项目模板
-A 课程视频(鼠标输入、列表进阶)
--鼠标输入
--Video
--Video
--Video
-B 课程视频(字典和图片)
--Video
--Video
--Video
--Video
-第5周--小测验A
-第5周--小测验B
-本周项目:“世界杯八强连连看”
--游戏说明
--程序说明
--编码步骤
--评分标准
--项目模板
-A 课程视频(类)
--华容道中的类
-B 课程视频(平铺图片)
--平铺图片
--理解对象
--编程技巧
--“华容道”游戏
-第6周--小测验A
-第6周--小测验B
-本周项目:“华容道”游戏
--游戏说明
--程序说明
--编码步骤
--评分标准
--项目模板
-A 课程视频(类进阶及文件操作)
--集合
--文件操作
--文字块类
--处理停止的文字块
-B 课程视频(游戏状态控制)
--游戏记分规则
--编程技巧
-第7周--小测验A
-第7周--小测验B
-本周项目:决战三字经
--游戏说明
--程序说明
--编程步骤
--评分标准
--项目模板
-A、课程视屏(精灵集合)
--Video
--精灵类
--战士类
--编程技巧
-B、课程视屏(动画)
--精灵碰撞
--精灵动画
--编程技巧
--保卫家园游戏
-第8周--小测验
-本周项目:守卫家园
--游戏说明
--程序说明
--编程步骤
--评分标准
--项目模板