跟我学Python从小白到入门 之 Part 4 操作列表003
手绘题图——禅绕画《奇艺空间》你自己还是老样子,又怎能希望未来的世界有翻天覆地的变化呢?——《摩西脑图》
往期课程:跟我学Python从小白到入门 之 Part 4 操作列表002
在前一次课程里,我们学习了以下四个内容:
跟我学Python从小白到入门 之 Part 4 操作列表003我们继续今天的学习,请点击以下蓝色字链接,进入代码编程页面,输入代码,点击运行就可以查看运行结果。
首先来回顾一下概念:
列表,由一系列按特定顺序排列的元素组成,你可以创建包含字母表中所有的字母、数字0到9,或者是姓名列表,也可以把任何东西加到列表中,其中的元素之间可以没有任何关系。
第三章我们学习了访问单个列表元素,学习了修改、添加和删除列表元素,对列表的元素进行排序等。
第四章的第1-3节,我们学习了使用for循环来遍历整个列表、使用range()函数创建列表,还有当我们使用for循环来生成列表比较繁复时,就可以创建列表解析等。
也就是,第三章学习的是访问单个列表元素,第四章的1到3节,一直在学习如何处理列表的所有元素。
今天我们开始学习第四节:处理列表的部分元素,在Python中称之为切片:
下面开始我们今天的学习吧!
4.4 使用列表的一部分
4.4.1切片
所谓切片,就是将整个元素的其中一部分元素作为一个整体来进行操作。
切片,要标明开始的第一个元素和结束的最后一个元素。这一段元素,就是我们处理的对象,相当于把整个元素切出来一部分,所以称之为切片。
这里要注意的是,我们给出元素的索引,会在最后一个元素的索引号之前停止。
差一行为——也就是说,我们要处理1号到8号元素,他们的索引号为0-7,但我们切片结束的索引号应该为8,这一点与range()函数是一样的。这就是我们常常所说的“差一行为”,这一点在编程中特别要引起注意。
切片方法:
变量名【开始索引号:结束索引号】
首先,我们来给变量赋值,变量liebiao中存储的是1-9的整数的平方,再显示列表的值,代码如下:
我们从今天开始跟着Python大大的新方法来学习,请大家复制以下列表到你的编辑页面,先运行看看结果
liebiao=[]
liebiao=[x**2 for x in range(1,10)]
print (liebiao)
我们的学习方式,可以对照下面的步骤来进行:
第一步,复制粘贴我的代码,然后点击运行,看看结果,你会发觉:写程序也不难嘛
第二步,然后你自己一个字一个字在手机键盘上,或者电脑键盘上输入代码,感受一下代码的输入,再点击运行,查看结果。
如果出现出错信息,你会发觉肯定是自己输入有问题,因为前面复制粘贴之后,顺利运行说明我们的代码是没错的,这样可以通过自己输入的方法,来练习熟悉代码输入
第三步,如果你做完上面的步骤之后,就可以去搞搞清楚代码都说的啥,这一步用来加强我们对代码的理解,为了方便今后学习更多更深的知识。
好的,复制粘贴,再点击运行,看见运行结果显示出来是不是感觉特别爽呢?
对,哦,其实编程就是这么爽!
当你的代码没有错误时,计算机会非常爽快的给出你正确的结果。我们要记住这种感觉,把他带到我们后续的学习中,编程真的不难,一定要破除编程是专业人士的专利的想法。
你在编程中遇到的所有的困难,只不过是因为你背景知识不够,投入时间不足和精力不够的原因。
我们每个人的智力,完全能够应付编程中遇到的所有问题,我们一定要坚信这一点。
运行完成之后,我们开始,第二步,对照代码一点一点敲进去
liebiao=[]
liebiao=[x**2 for x in range(1,10)]
print (liebiao)
这里要注意的是所有的字符都是西文字符,不要在中文状态下输入,否则运行会出错。
好啦,敲入自己的代码是不是遇到了一点点小小的困难呢?比如说中括号因为输入的是中文,所以运行出错,改为西文状态就可以了,是不是?嗯,记住我们出现的错误,下次就可以避免啦。多错几次就不会再错,这个是学习新技术的最好的方法
好啦,我们来解释一下这三行代码是什么意思?
liebiao=[]
liebiao=[x**2 for x in range(1,10)]
print (liebiao)
这个我们在前面的002课程中已经学习过,详细内容请大家点击链接,跳转到前一次课进行复习,我现在只做简单的讲述。
第一句给列表赋一个空值,第二句给列表赋值,元素是从1到9的平方,第三句显示列表里面包含的元素。
我们现在显示的是列表中所有的元素,如果我以后只对前五个元素进行处理,我需要怎么操作呢?这就要用到我们现在要学习的切片。
切片的方法是:列表变量名[起始索引号:结束索引号]
请一定要注意中括号中的内容【起始索引号:结束索引号】,也就是起始索引号与结束索引号之间是用冒号分隔的。
我们来输入代码:
y=liebiao[0:5]
print(y)
第一句,将列表从第一个元素到第五个元素切片,然后赋值给y,第二个语句显示切片的元素
我们还可以将这两个语句简化为一个语句
print(liebiao[0:5])
显示结果是完全相同的,我们看一下程序运行的界面,第五句和第六句,以及第八句运行的结果是完全相同的。
我们可以生成列表的任何子集,大家尝试一下提取列表的第二到第四个元素,然后自己写一下代码将切片显示出来。
首先我们来分析一下这个列表中的所有元素
[1, 4, 9, 16, 25, 36, 49, 64, 81]
索引的编号是从零开始的,所以第一个元素的编号为零,最后一个元素的编号为8
也就是:
liebiao[0]——[1]
liebiao[1]——[4]
liebiao[2]——[9]
liebiao[3]——[16]
……
liebiao[7]——[64]
liebiao[8]——[81]
我们现在要提取第二个到第四个元素,所以它的索引编号是1到3
所以我们的代码应该是:
print(liebiao[1:4])
此时一定要记住“差一行为”,所以我们的结束编号应该是索引编号的后一个。
好啦,大家再练习一下吧,从第一个元素开始,到第五个元素应该怎么编号呢?
省略起始索引号,系统会自动从列表开头开始
切片的方法是:
列表变量名[:结束索引号]
也就是,0:5和:5,结果是完全相同的切片,大家输入这两行代码查看一下运行结果
print(liebiao[0:5])
print(liebiao[:5])
两行代码的运行结果是完全相同的,都是从第一个元素开始切片,到第五个元素
代码及运行结果:
跟我学Python从小白到入门 之 Part 4 操作列表003省略结束索引号,系统会自动从起始索引开始,到最后一个元素。
切片的方法是:
列表变量名[起始索引号:]
例:print(x[6:])
代码及运行结果:
跟我学Python从小白到入门 之 Part 4 操作列表003负数索引号返回离列表末尾相应距离的元素。
例:print(x[-3:])
这种语法,无论多长的列表,都可以让你输出从特定位置到列表末尾的所有元素。
4.4.2 遍历切片
如果要遍历列表的部分元素,可以在for循环中使用切片。
例:
liebiao=[x**2 for x in range(1,6)]
print(liebiao)
for y in liebiao[0:3]:
print(y)
代码及运行结果:
跟我学Python从小白到入门 之 Part 4 操作列表0034.4.3复制列表
复制列表用来根据已经存在的列表,来生成一个新的列表,这里就要用到切片。
复制列表时,使用切片的方法是:列表变量名[:]
大家可以用代码入门三步法,先复制粘贴代码,再自己一个字一个字输入代码,来学习。
代码如下:
x=[1,2,3,4,5]
print(x)
y=x[:]
print(y)
x.append(666)
print(x)
y.append(110)
print(y)
代码及运行结果截图如下:
跟我学Python从小白到入门 之 Part 4 操作列表003我们可以看到,两个列表是独立的,新增的元素不会对其他列表造成影响。
下面是错误的示范,我们可以看看:
x=[1,2,3,4,5]
print(x)
y=x
print(y)
x.append(666)
y.append(110)
print(x)
print(y)
代码及运行结果截图如下:
跟我学Python从小白到入门 之 Part 4 操作列表003我们可以看到两个列表内容现在完全相同,这不是我们希望的结果。
因为使用的是y=x,这个赋值语句,所以y中的值与x完全相同,当其中一个列表的元素发生变化时,另一个列表中的元素随之改变,如果这不是我们希望的结果,我们希望两个列表是完全独立的,那么就要注意,赋值语句中要使用y=x[:],而不能使用y=x
好了,新课到此结束。
下面是我们大展身上的时候了,请动手试一试,下面的项目请自己编写一下代码:
4-10 切片:选择你在本章编写的一个程序,在末尾添加几行代码,以完成如下任务。打印消息“The first three items in the list are:”,再使用切片来打印列表的前三个元素。打印消息“Three items from the middle of the list are:”,再使用切片来打印列表中间的三个元素。打印消息“The last three items in the list are:”,再使用切片来打印列表末尾的三个元素。
4-11 你的比萨和我的比萨:在你为完成练习4-1而编写的程序中,创建比萨列表的副本,并将其存储到变量friend_pizzas中,再完成如下任务。在原来的比萨列表中添加一种比萨。在列表friend_pizzas中添加另一种比萨。核实你有两个不同的列表。为此,打印消息“My favorite pizzas are:”,再使用一个for循环来打印第一个列表;打印消息“My friend's favorite pizzas are:”,再使用一个for循环来打印第二个列表。核实新增的比萨被添加到了正确的列表中。
4-12 使用多个循环:在本节中,为节省篇幅,程序foods.py的每个版本都没有使用for循环来打印列表。请选择一个版本的foods.py,在其中编写两个for循环,将各个食品列表都打印出来。
下次课我们学习第四章最后两节:
4.5 元组
4.6 设置代码格式
说明:进入Python大大的饭团,跟志同道合的小伙伴一起学习Python程序编程,我觉得Python大大的方法特别适合零基础的Python小白;而且如果你是Python已经入门想要更加深入学习的,群里的其他大牛们也可以一起讨论你在继续攀登代码高峰中遇到的问题。如果你对编程有兴趣,真诚欢迎你的加入。
欢迎加入Python大大的饭团,一起学习!今天的学习到此结束,祝秋天快乐!
2017年9月14日16:19完成初稿
20170914/18:05修改完成
ps:下面一堆例行的唠叨,与课程无关,可以不看:
1、这个周不舒服然后又忙着应付开学的各种新课,到今天早上才开始写文章,心里换了十次写啥,昨天晚上看了《明日边缘》想写它的拍摄流程,主要是觉得那种感觉就象编程的循环语句,而且是设计得非常好的循环程序,嗯可是说了要写Python的,还是写这个吧。明日边缘下次再写。
2、这次没有画心流画,就把上次没有画完的《奇异空间》作为这次的题图,感觉虽然没有画完,但是自有一种韵律美,就不添足了,自己很喜欢。
3、今天的格言是摩西脑图的文字,饭团每天推送的脑图,打开了我对脑图理解的新大门,脑图就是我们常常听说的思维导图的另一个名称。发一下今天推送的脑图——对比思维图:
4、边听《友邻优课》今天的英语新闻解说课文,边打字,这些话唠的内容,完全不用经过脑子,好象就是从我的手上流到键盘再到电脑里的,难怪有作家说,小说写到后面,主人公就有了自己的生命,我希望我在写其他文章的时候,也能找到这种感觉,我喜欢这种文字自动流出的感觉,记录一下。
5.感觉好忙,耳朵里面听的是学习文件,手上和脑子里是文章和代码,一心n用。
话唠完毕!
20170914 09:26过早去了回来继续看书写文章