总是有人要赢的,为什么不能是我?跟我学Python从小白到入门~
手绘题图之006——浓密树荫下从清凉的风和清亮的河水吸取再战江湖的力量。总是有人要赢的,为什么不能是我?
学好编程、英文和写作,走向人生新高度。
今天我们继续第三章列表的学习,在第三章和第四章我们要学习关于列表的两个重要内容:
1.在列表变量中存储信息集合。
2.遍历列表来操作集合中的信息。
上一次课(Part 3 列表简介002)我们已经学习了在列表变量中存储信息的方法。
在Python编程中的列表变量,相当于数学中的集合的概念。而列表变量的赋值,相当于用列举法来进行集合的内容输入。
在Python中用方括号来表示列表变量,用逗号来分隔变量中的元素。
例如:由a、b、c、d四个小写的英文字母组成的列表变量liebiao,就可以表示为:
liebiao = [ "a" , "b" , "c" ,"d"]
双引号和单引号有相同的效果,因此上面那个列表的赋值还可以表示为以下格式:
liebiao = [‘a’,‘b’,‘c’,’d’]
大家使用print语句打印出来,可以发现这两个列表变量,赋值的结果是完全相同的。
我们来输入程序代码,复习一下上次课中列表的赋值:
请点击蓝色字链接进入:网页版Python编程界面
程序代码及运行结果如下:
列表中元素的编号,即索引,是从零开始的。
上一次课(Part 3 列表简介002)我们学习了如何在列表中修改、添加和删除元素,在列表中修改添加删除元素要用到以下几个函数。
1、在列表末尾添加元素用到的是append()函数。
格式:列表名.append(添加的具体数值)
2、在列表中插入元素,要使用insert()函数,insert()函数可在列表的任何位置添加新元素,只需要指定新元素的索引和值。
格式:列表名.insert(索引号,添加的具体数值)
3、从列表中删除元素,一共有四种方法,一是使用del函数,二是使用pop函数,三是利用pop弹出任何位置的元素,四是利用remove()根据值删除元素。
上次课中只学习了第一种方法,使用del()函数删除列表中的元素。使用del可以删除任何位置的元素,条件是知道元素的索引号。
格式:del(索引号)
程序代码及运行结果如下:
复习到此结束,现在开始新的内容的学习,继续进行列表元素的删除操作
3.2 修改、添加和删除元素
3.2.3 从列表中删除元素
从列表中删除元素,一共有四种方法,一是使用del函数,二是使用pop函数,三是利用pop弹出任何位置的元素,四是利用remove()根据值删除元素,上次课学习了使用del()函数来删除列表中的元素。
使用del可以删除任何位置的元素,条件是知道元素的索引号。但是,使用del()函数删除列表中的元素,有一个最大的缺点是:使用del()函数后,列表中的元素就会被彻底删除,无法再访问。
而使用pop()函数,则会弹出堆栈中最上面一个元素,但移除的元素如果赋给另一个变量,则这个元素可以再次被引用。这种引用在程序设计中往往是必要的,比如,在小游戏中泡泡消除时,要删除表示这个泡泡的元素,同时要在同一个位置做出泡泡爆裂的效果,那么就要再次调用这个元素。
程序设计时,应该使用del()函数还是pop()函数,我们可以做出如下判断:
当一个元素从此彻底不用时,可以使用del()函数,彻底删除列表中的这个元素。
当一个元素,只是从列表中移除待用时,则要使用pop()函数,弹出元素并赋值给另一个变量。
我们接着上面的代码来进行程序的书写:
在liebiao变量的第三个元素插入一个新元素'c',显示列表liebiao
则程序运行结果是:
删除第三个元素'889',由于列表中元素的编号,即索引,是从零开始的,所以删除时要注意元素的索引编号减一。
程序运行结果如下:
现在,把最后一个元素弹出,并保存到一个新的变量new中。
程序运行结果如下:
可以看到,最后一个元素'001',已经从列表变量中被删除了,但由于在删除(弹出)时使用了赋值语句:new=liebiao.pop(),所以最后一个元素被保存在一个新的变量new中。
现在我们就可以在需要时,把这个元素进行再次调用。这个操作就比del()函数的彻底删除不用,多了一个待用功能。
我们学会了使用pop()函数,弹出堆栈中最上面一个元素。
而在使用pop()函数时,如果指定了弹出元素的索引号,还可以弹出任意指定的元素,代码如下:
程序运行结果如下:
使用pop()函数弹出具有特定值的某个元素:
我们再次练习一下给上面的列表变量增加几个元素,代码如下:
程序运行结果如下:
我们来将指定的值‘123’弹出,并赋值给一个新的变量new003
代码如下:
程序运行结果如下:
我们可以看到,remove()函数只删除了与指定值相同的第一个元素,而'123'这个元素在列表中出现了两次。
如果想要把所有与指定值相同的元素都删除掉,则需要用到循环,来判断是否已经删除所有指定的值,这一操作我们将在第7章再进行学习。
3.3 组织列表
所谓组织列表,是指对列表中的元素进行排序操作。
我们创建的列表中,元素的排列顺序常常是无法预测的。
因为,很多数据是由用户在程序使用时提供的,而用户在提供数据时,很可能没有按照列表元素的顺序来进行输入。
我们有时候希望保留数据的原始排列顺序,有时候又需要调整元素的排列顺序,因此Python提供了多种组织列表的方法。
1、使用sort()对列表进行永久性排序。
2、使用sorted()的对列表进行临时排序。
使用sort()对列表进行永久性排序
首先我们来使用sort()函数对列表进行永久性排序。
函数格式:列表变量名.sort()
代码和程序运行结果如下:
此时sort()函数永久性的修改了列表元素的排列顺序,再也无法恢复到原来的排列顺序。
为了简化操作,我们在永久改变排列顺序之前,把x的值赋给y。
y中保留了原始的x的值,方便我们进行下一个试验。
按照与字母顺序相反的顺序来排列列表元素
函数格式:列表变量名.sort(reverse=True)
现在我们按照与字母顺序相反的顺序来排列列表元素,这个函数也是永久性的改变排列顺序。
我们接着上面的代码来输入第八行和第九行:
可以看到,元素按照字母的倒序进行了排序,这种顺序的改变也是永久性的。
不影响原始排列顺序,临时排序,用sorted()
函数格式:sorted(列表变量名)
要保留列表元素原有的排列顺序,同时以特定的顺序呈现,就可以使用sorted()函数,不会影响原始的排列顺序。
我们接着上面的代码来输入第11行和第12-13行:
程序运行结果如下:
通过结果,我们可以看到,y的原始顺序没有做出任何改变,而使用sorted()函数之后,列表中的元素按照字母顺序进行了临时排列。
同样的,要按语字母顺序相反顺序显示列表,也可以向函数sorted()传递参数reverse=True
函数格式:sorted(列表变量名,reverse=True)
代码和程序运行结果如下:
3.3.3 倒着打印列表
前面我们用到了一个参数reverse,这个英文单词的含义是反转和颠倒。
要反转列表元素的排列顺序,可以使用reverse()函数。
注意:reverse()不是按照字母和数字的倒序,而是按照元素的输入时的相反顺序来打印元素列表。
函数格式:列表名.reverse()
我们对照着上面的sorted(x,reverse=True)函数来看,可以发现sorted(x,reverse=True)函数是按照字母和数字的倒序来排序,而reverse()函数只是按照元素输入时的相反顺序来排序。
x.reverse()永久修改列表元素的顺序,再次使用可恢复原有顺序注意:x.reverse()将永久修改列表元素的顺序,再次使用x.reverse()可恢复原有顺序
3.3.4 确定列表的长度
当我们需要知道列表中包含多少个元素时,我们可以使用len()函数来得到结果,这个函数就是用来返回列表元素的个数的。
函数格式:len(列表变量名)
len(列表变量名)3.4 使用列表时要避免索引错误
每当需要访问最后一个元素时,都可以使用”-1“作为索引号
代码与运行结果如下图所示:
此时,元素一共只有七个,索引号因为是从0开始的,所以最后一个元素的索引号为6。如果此时出现索引号为7的元素,则会出现出错提示信息,如下图所示,用来点明出错的代码位于第11行,出错的函数是print语句,错误类型是列表的索引超出了列表的范围:
Traceback (most recent call last): File "/usercode/file.py", line 11, inprint(x[7])
IndexError: list index out of range
前面提到要访问列表的最后一个元素,可以使用”-1“作为索引号,但当列表为空时,此引用就会出错:
索引号超出范围注意:
当发生索引错误却找不到解决办法时,可以尝试将整个列表或者是列表的长度打印出来,在程序对列表进行了动态处理之后,这一点尤其如此。通过查看列表或其包含的元素数,可以帮助我们找出这种逻辑错误。
3.5 小结
本章中,我们学习了列表是什么,以及如何使用其中的元素,如何定义列表以及如何增删元素;如何对列表进行永久性的排序,以及如何为展示列表而进行临时排序;如何确定列表的长度,以及在使用列表时如何避免索引错误。
在下一章,我们将学习如何以更高效的方式处理列表元素。通过使用更少的几行代码来遍历列表元素,能高效的处理每个元素,即便列表中包含了成千上万个元素。
PS:必备技能和必要概念的解盘:
1、使用clear命令清除掉查看运行结果的绿色窗口中所有的内容
程序运行结果出来之后,我们可以看到,如果进行了多次运行,在运行结果的窗口会有很多行内容,不便于观察。此时我们可以使用clear命令清除掉运行窗口中所有的内容,方便进行新的运行结果的查看。
操作方法:在结果窗口处点击鼠标,输入 clear,再按回车键即可。
回车之后,结果窗口所有的信息全都消失,剩下了干净的屏幕,以便于查看新的结果。
2、堆栈
在堆栈中最先存入的元素位于最底层,最后放入的元素位于最上层,所以使用POP弹出元素时,会弹出最上层,也就是最后一个存入的元素。
请大家重复练习几次例题的代码,并且希望大家多用自己设计的列表再做多次练习,就会更好的掌握今天的内容。
谢谢阅读,谢谢你的关注和宝贵的时间,本次学习到此结束。
20170819星期六初稿写于京都
20170820星期天完成稿写于京都
20170821星期一改错字于奈良
今天无意间找到另一个网页版的编辑器,感觉比原来那个好用,推荐一下:
Python 在线工具 | 菜鸟工具https://c.runoob.com/compile/6
欢迎阅读往期内容:
以下为例行的唠叨:
Ps:
1、标题来源:
总是有人要赢的,为什么不能是我?——Helena Morrissey
51岁生9个娃还管理着4000亿资产,这个超人妈妈活成了励志少女!
http://t.pae.baidu.com/s?s=bai-lf2ndj
2、明天就要离开京都去奈良,又是007交文章的日子,上次是从名古屋折腾到京都,这次又会在路上折腾,可以肯定没有时间写文,上次提前写好了,结果忘记作业雨时间,这次订了四个闹铃,相信怎么也不会忘记交作业了吧。知道星期一肯定没时间,星期天就写好了上周文章,然后星期一从名古屋到京都,各种折腾,晚上突然想起来,五点要发文的……然后从2月14日开始加入007发文到八月14日第一次居然迟交作业罚发红包。
3、这次在京都来了个深度游,玩了五天,今天孩儿们和他们老妈去了锦市场,鉴于我的功课没有完成,于是主动要求留下来看屋,主要是写文章,没有孩儿们吵闹,写文的速度要快好多。
4.4084个字,都是一个一个在电脑上敲出来的。这篇文章32张图,31张截图,都是把代码一点一点打进电脑后截的图,一张手绘题图是从京都贵船神社到此一游后去贵川河边吹完山风看完绿树白云和山景,画出来的心情,自己好喜欢。感觉有点被自己感动的样子呢,嗨皮玩耍还能坚持学习和更文。嗯,不错不错,觉得自己还可以更好一点,试试从现在开始一个星期两篇文章。嗯,试试。
20170821
总是有人要赢的,为什么不能是我?跟我学Python从小白到入门~Part 3 列表简介002