![dbb02bc3c67e03f7bd261831c8856142.png](https://i-blog.csdnimg.cn/blog_migrate/e375d724079d85c658c26b7f15b3abdb.jpeg)
今天的课程我们要给大家讲一讲Python编程中列表(list)功能。
请点击右上角“关注”按钮关注我们哟:跟着木辛老师学习Python编程知识,变身快乐的编程达人吧~
在之前的课程中,我们已经学习了通过Python在内存中存储信息,还可以使用名字来获取存储的信息。到目前为止,我们存储过字符串和数字(包括整数和浮点数)。
在Python中,还有一个非常有用的功能:就是可以把一堆东西放在(储存)一起,放在某种”组“或者”集合“中。这样一来,就可以一次对整个集合做处理,也更容易记录一组数据。
有一类集合叫做列表(list),在这次课里,我们就来学习一下列表的相关知识——什么是列表,如何创建、修改和使用列表。
列表非常的有用,很多很多程序里都用到了列表。咱们在之后的课程里还会深入讨论图形和游戏编程中的列表的应用,因为在游戏中有很多图形对象都需要存储在列表中。
列表是什么
如果我们想列举出来最喜欢吃的水果,你可能会这么写:
苹果
桃子
葡萄
西瓜
那么,在Python中应该怎么写呢?
fruit = [‘苹果’, ‘桃子’ , ‘葡萄’, '西瓜’]
嗯嗯,这个fruit就是Python中列表的例子,列表中的单个元素就叫做项或者元素(item)。可以看到,Python中的列表与日常生活中建立的列表并没有太大差异。列表使用中括号指出从哪里开始,到哪里结束,另外用逗号分隔列表内的各项。
创建列表
fruit是一个变量,咱们之前的课程曾经讲过,程序可以为变量赋予不同类型的值。我们已经为变量赋予过数字和字符串了,同样的还能赋值一个列表。
就像创建任何其他变量一样,创建列表也要为他赋某个值;另外还可以创建一个空的列表,比如:
empty_list = []
中括号里没有任何元素,所以这个列表是空的。
请小朋友们仔细思考一下哈:一个空列表有什么用呢?在什么情况下我们需要创建一个空列表呢?
嗯,在很多情况下,我们无法提前知道列表中会有什么,会有多少元素,也不知道这些元素是什么,只知道将会用到一个列表来保存一些内容。
所以啊,创建了一个空列表之后,程序就可以向这个列表增加元素了。但是,具体应该怎么操作呢?
向列表中添加元素
要向列表中添加元素,需要用到append()函数。在交互模式下代码应该这么写:
![6817e743bc1faf2b68045736fd5c3b72.png](https://i-blog.csdnimg.cn/blog_migrate/8c6d6c39a3530931901cad9c406ad990.jpeg)
在Python程序里,咱们可以使用append函数无限制的往列表中追加元素,但是呢,请大家记住哈:
向列表中添加元素之前,必须先创建列表(可以是空列表,也可以非空)。这就像在做一个蛋糕,不能直接把各种配料倒在一起,而是需要先将配料倒入碗中,不然肯定会弄得到处都是哟!
木辛博士说
追加(append)是指把一个东西加在最后面。把一个数据追加到列表时,会把它增加到列的末尾。
列表中的内容
列表可以包含Python能存储的任何类型的数据,包括数字、字符串、对象,甚至可以包含其他列表。Python的列表并不要求其中的元素必须是同一个类型或者同一种东西。
这说明,一个列表中可以同时包含不同类型的内容:比如数字和字符串☟☟
![45d7148d22822e501073b53324fe2aa9.png](https://i-blog.csdnimg.cn/blog_migrate/5f90d3bed7e98edc3cb6b0ec289cb75a.jpeg)
通过列表获取元素
可以按照元素的索引(index)号从列表获取单个元素。列表索引从0开始,所以这个列表中的第一项就是
![88886b4289565111a0b783a07c2944e7.png](https://i-blog.csdnimg.cn/blog_migrate/b8a1b9e10d1b3cb9cdd24cd2ac555297.jpeg)
同理,如果我们想获取到第四个元素,只需要填入索引3即可。
大家有没有注意到一个细节呢?
“为什么索引从0开始而不是1呢?”
非常好,小朋友们观察的非常仔细。在编程语言里,确实存在这个很神奇的细节,这个问题呢,自从计算机发明到现在,很多程序员、工程师还有计算机科学家们一直都在争论这个问题,这场争论应该也会一直持续下去吧,大家只要记好:事实就是如此,仅此而已。
木辛博士说
我们查了一些资料,有一些比较权威且被大多数人认可的解释是这样的:计算机使用的二进制数,也就是“比特”来存储一切信息。很久以前,因为计算机资源限制,这些比特是非常贵重的。每个比特都必须精挑细选,所以呀,为了更合理高效的利用这些资源,内存位置和列表索引也都是从0开始的。
这些细节大家了解一下就好了。
木辛博士说
索引(index)表示某个东西的位置,index的复数形式是indices。如果你在队伍中排在第4个,那么你在队伍中的索引就是4;不过呢,如果你在一个Python列表中排第四位,那么索引则会是3,因为Python的索引是从0开始的!
化整为零:列表的分片操作
![8ce3c197023c73b993b4b0516b0080c1.png](https://i-blog.csdnimg.cn/blog_migrate/d589af4c9d2a4d6a55fa4ab7415e9de6.jpeg)
在Python中,可以使用索引从列表一次取出多个元素。这个操作叫做 列表分片(slicing)
与for循环中的range()类似,分片获取元素时,会从第一个索引开始,不过在到达第二个索引之前停止。
正是由于这个原因,在前面的例子里我们只取回了3项,而不是4项。要记住这一点,一种方法就是牢记取回的项数总是两个索引数之差(4 - 1 = 3,所以取回了3项)。
关于列表分片,还有一个重要的问题需要谨记:对列表分片时取回的是另一个列表,这个列表称为原列表的一个分片;元列表的数据并没有发生改变;这个分片是原列表的副本。
一个思考题
讲到这里,我们留一个思考题给大家
请大家看一下,如下两个语句有什么不同呀?
![d6caddf2322d8b9e057566d8af506e4c.png](https://i-blog.csdnimg.cn/blog_migrate/2c518cdbf3dda689eb45ff76a3124b1b.jpeg)
小提示,大家可以通过之前学习的type函数入手解决这个问题哟
请小朋友持续关注我们哈,后续课程会将这些思考题和测试题的答案及其详细讲解发出来哈,请期待我们后续的课程吧~
是不是可以简洁一些
使用分片的时候可以采用一些简写的形式。
虽然采用这些简写,不会减少很多输入;但是我们不是一直在强调嘛,作为一个优秀的程序员,要寻求更加简洁的代码,同样的,世界上的优秀程序员都有这种思维,所以当我们在看别人的代码时,就不会被这些简写迷惑。
木辛博士说
这很重要,因为学习新的编程语言时(或者说学习编程时),阅读并理解他人的优秀代码是提升自我能力的一个最有效的手段。
如果想要分片中包括列表的开始部分,可以简写成如下方式:
![087f38d33da35fa9991f09b322e29193.png](https://i-blog.csdnimg.cn/blog_migrate/80ecd210f3839c5542405551dc84435c.jpeg)
大家请注意,冒号之前是没有数字的;这样就会得到从列表开始位置一直到(但不包括)指定索引之间的所有元素。
同理,要得到列表末尾也可以写为:
![6a52028bf43e4d91cc7c7ce6cbae4943.png](https://i-blog.csdnimg.cn/blog_migrate/38fc10e0629771fa8e9806e3192d62a1.jpeg)
如果没有放入任何数字,而只是使用了冒号,则可以得到整个列表
![c49ace22cd01fe99cac1e721a29a8c46.png](https://i-blog.csdnimg.cn/blog_migrate/84903aa04065f48a1a9e904b6b091a26.jpeg)
修改列表元素
可以使用索引来修改列表的某个元素;但是不能使用索引的方式向列表中增加新的元素。
![67f0a728696501b49279bbff1b664ad1.png](https://i-blog.csdnimg.cn/blog_migrate/661f28734a2de8fa0bd639285a3c4dbc.jpeg)
看到上边的报错了吧?嗯,是的,如果试图修改一个不存在的东西,Python是不会允许的。
增加元素的其他方法
之前我们已经学习了通过append函数向列表中添加元素。
除了这种方式外Python还提供了另外一些方法。实际上,向列表中增加元素有3种方法:
- append() 向列表末尾增加一个元素
- extend() 向列表末尾增加多个元素
- insert() 向列表中的某个位置增加一个元素,需要告诉它在哪里增加元素
![bba330f73e26cb022800a0b8f96c586e.png](https://i-blog.csdnimg.cn/blog_migrate/2bfe777fbee8f6ecdd4e257105721386.jpeg)
小朋友们在学习的过程中要注意两点
- 使用extend()函数添加多个元素的时候,需要使用列表数据结构
- 使用insert()函数指定位置添加元素的时候,需要先指定位置,再指定插入的元素
有个小朋友问了:我怎么觉得append和extend这两个函数看起来好像呀!
嗯,是的,他们俩长的有些相像,但是之间确实存在一些差别,请看如下的例子
![3e6a89bf94019d102ef58b75dc6d412f.png](https://i-blog.csdnimg.cn/blog_migrate/aaa33bf7e521c98128a86e6d2b23fee2.jpeg)
使用append函数,每次添加的是一个元素;也就是说如果append一个列表的话,就是在源列表最后的位置增加一个子列表。
而使用extend函数,每次可以增加多个元素,虽然是使用了一个列表,但是会被当做多个元素分别插入到源列表的最后。
所以呀!小朋友们之后一定要分清哟!
删除它吧
咱们讲了查看元素,增加元素,取子列表的方法;现在的列表是不是很长很长了呀!
那么现在咱们学习如何删除元素吧!
Python提供了3种删除列表元素的函数和方法
- remove() 根据元素值删除列表中指定元素
- del 根据索引位置删除元素
- pop() 得到列表中最后一个元素,并从列表中删除
![e1ab2c8ecf688a79ab80e3c9a667e8e3.png](https://i-blog.csdnimg.cn/blog_migrate/64ffec749ddb490243eee3dbf75dfda3.jpeg)
大家在使用删除函数的时候一定要记得:只能删除已经存在的元素,不能删除不存在的元素!
Python中列表的基本操作我们今天就先学到这里吧,下一次课程我们会继续深入的讲解列表的其他操作:列表的搜索和排序。
小朋友们不要忘记关注我们哟 ,下期课程会带领大家学习Python中函数的概念:《Python小课堂第十四课:10分钟学会使用函数,让我们的程序更整洁》
快乐编程,快乐成长,咱们下次课再见!
咱们下次课再见,拜拜~