python列表

1.列表是什么
列表 由一系列按特定顺序排列的元素组成.你可以创建包含字母表中所有字母、数字0~9或所有家庭成员姓名的列表;也可以将任何东西加入列表中,其中元素之间可以没有任何关系,鉴于列表通常包含多个元素,给列表指定一个表示复数的名称(如lpersons、letters).

在python中,用方括号( [ ] )来表示列表,并用逗号分隔其中的元素,下面是一个简单的列表示列,这个列表包含了几种自行车.
打印出来列表,python将答应列表内部表示,包括方括号.
在这里插入图片描述
我们如何访问列表中的元素呢?

2.访问列表中的元素
列表是有序的集合,因此要访问列表的任何元素,只需要将该元素的位置或索引告诉python即可,要访问列表元素,可以指出列表的名称,在指出元素的索引,并将其放在括号中.

在这里插入图片描述
可以看到我们访问了列表元素的语法,当你请求获取列表元素时,python只返回该元素,而不包括方括号和引号:我们可以通过print(bicycles[0].title()),使首字母大写输出.
在这里插入图片描述
3.索引从0而不是1开始
在python中,第一个列表元素的索引为0,而不是1,在大多数编程语言都是如此,这与列表操作的底层实现相关,
第二个列表元素的索引为1,根据这种简单的计数方式,要访问列表的任何元素,都可以将其位置减1,并将结果作为索引,例如,要访问第四个元素,可以使用索引3.
在这里插入图片描述
Python为访问最后一个列表元素提供了一种特殊的语法,通过将索引指定为-1,可以让python返回最后一个列表元素:
在这里插入图片描述
这种方法很好用,因为你经常需要在不知道列表长度的情况下访问最后的元素,这种约定也适用于其他负数索引,列如,索引-2返回倒数第二个列表元素,索引-3返回倒数第三个列表元素,依次类推.

4.使用列表中的各个值
可以使用其他变量一样使用列表中的各个值,列如,你可以使用拼接根据列表中的值来创建消息.

我们来尝试从列表中提取一款车车,并使用这个值来创建一条消息.
我们使用0下标的值生成了一个句子,并将存储在变量message中.输出下面的值.
在这里插入图片描述

5.修改、添加和删除元素
你创建的大多数列表都是动态的,这意味着列表创建后,将随着程序的运行增删元素.你创建打手枪游戏,你可以先把玩家存储在列表中,然后每当有玩家被打死时,都将其从列表移除,而每次有新的玩家出现时,都将其添加到列表中,在整个游戏运行期间,外星人的长度将不断变化.

5.1修改列表元素
我们定义一个摩托列表,其中第一个元素为’feixiang’,接下来我们将第一个元素的值改为’yamaha’,输出表明,第一个元素确实变了,但是其他列表元素的值没有改变:
你也可以修改任何列表元素的值,而不仅仅是第一个元素的值.
在这里插入图片描述
5.2 在列表中添加元素
你可能出于很多原因要在列表中添加新的元素,列如,你可能希望游戏中有新的用户、添加可视化数据或給网站添加新注册的用户,python提供了多种既有列表中添加新数据的方式.

5.2.1 在列表末添加元素
在列表中添加新元素时,最简单的方式是将元素附加到列表末尾,给列表附加元素时,他将添加到列表末尾,继续使用前一个示列中的列表,在其末尾添加新元素‘ doubi’
在这里插入图片描述
方法append()将元素’doubi’添加到了列表末尾,而不影响列表中的其他元素;
方法append()让动态地创建列表易如反掌,列如,你可以先创建一个空列表,在使用一系列的append()语句添加元素,在创建一个空列表,再在其中添加元素.
在这里插入图片描述
在这里插入图片描述
5.2.3 在列表中插入元素
使用insert()可在列表的任何位置添加新元素,为此,你需要指定新元素的索引和值.
在这个示列中,值’hapifan’被插入到了列表开头;方法insert()在索引0处添加空间,并将值’hapifan’存储到了这个地方.这种操作将列表中既有的每个元素都右移一个位置.
在这里插入图片描述

5.2.4. 从列表中删除元素
你经常需要从列表删除一个或多个元素.列如,当你用户在你创建的web应用中注销其账户时,你需要将该用户从活跃用户列表删除,你可以根据位置或值来删除列表中的元素.

使用del语句删除元素
如果知道要删除的元素在列表中的位置,可以使用del语句
在这里插入图片描述
使用del删除了列表cycle中的第一个元素--------‘hapifan’

使用del可以删除任何位置处的列表元素,条件是知道其索引.

5.2.5.使用pop()删除元素
有时候,你将元素从从列表删除,并接着使用它的值,列如,在web应用程序中,你可能要将用户从活跃成员列表删除,并将其加入到非活跃成员列表中.

方法pop()可删除列表末尾的元素,并让你能够接着使用它.列表就像一个栈,而删除列表末尾的元素就相当于弹出栈顶元素.
我们首先打印cycle,接下来,我们从这个列表中弹出一个值,并将其存储到变量cycle_2中,然后我们打印这个列表,核实从其中删除一个值,最后,我们打印我们弹出来的值,证明我们依然能够被访问我们删除的值.
在这里插入图片描述

我们也可以弹出列表中任何位置处的元素
实际上,你可以使用pop()来删除列表中任何位置的元素,只需要在括号中指定要删除的元素的索引即可.
我们列出了列表中的一个名车,然后打印有关这辆车的消息,输出简单句子,描述了我购买的第一辆车车.
在这里插入图片描述
每当使用pop()时,被弹出的元素就不在列表中了.

5.2.6. 根据值删除元素
有时候你不知道从列表中删除的值所处的位置,如果你只知道要删除的元素的值,你可以使用remove().
如果我们想删除cycle中的值’xiudou’,我们可以:
在这里插入图片描述
使用remove()从列表删除元素时,我们也可以接着使用它的值,下面删除了’menghuang’,并打印一条消息,指出要将其从列表中删除的原因.
在这里插入图片描述
我们将值’menghuang存储在变量’too_tired’中,接下来,我们使用这个变量来告诉python将那个值从列表删除,最后,值’menghuang’已经从列表中删除,但它还是存储在变量too_tired中,让我们打印一条消息,指出将’menghuang’从列表删除原因.
在这里插入图片描述

6.组织列表
在你创建列表中,元素的排序常常是无法预测的,因为你并非总能控制用户提供的数据顺序,这虽然在大多数情况下都是不可避免的,但你经常需要以特定的顺序呈现信息,有时候,你希望保留列表元素最初的排序顺序,而有时候又需要调整排列顺序.pyhon提供了很多组织列表的方式,可更具具体情况选用.

6.1 使用方法sort()对列表进行永久性排序
python方法sort()让你能够较为轻松地对列表进行排序,假设有一辆汽车列表,并要让其中汽车按字母顺序排序,为了简化这项任务.我们假设该列表中的所有值都是小写的.
在这里插入图片描述
方法sort()永久性地修改了列表元素的排序顺序,现在,汽车是按字母顺序排列的,在也无法恢复到原来的排序顺序.
在这里插入图片描述
你还可以按字母顺序相反的顺序排列列表元素,为此,只需要sort()方法传递参数reverse-True.下面的示列将汽车列表按与字母顺序相反的顺序排序.
在这里插入图片描述
6.2 使用函数sorted()对列表进行临时排序.
要保留列表元素原来的排序顺序,同时以特定的顺序呈现他们,可以使用函数sorted().函数sorted()让你能够按特定顺序显示列表元素,同时不影响他们在列表中的原始排列顺序

我们首先打印原始顺序打印列表,在按字母顺序显示列表,以特定顺序显示列表后,我们进行核实,确认列表元素排序顺序与以前相同.
在这里插入图片描述
注意:调用函数sorted()后,列表元素的排序顺序都没有改变,如果你要按字母顺序相反的顺序显示列表,也可以向函数sorted()传递参数reserse=True.

注意:并非所有的值都是小写时,按字母顺序排列列表要复杂些,决定排列顺序时,有多种解读大写字母的方式,要指定准确的排序顺序,可能比我们这里所做的要复杂,然而,大多数排序方式都基于上面所讲.

6.3倒着打印列表
要反转列表元素的排序顺序,可使用方法reverse(),假设汽车列表是按购买时间排序,可轻松地按相反顺序排列其中的汽车.

注意,reverse()不是指按字母顺序相反的顺序排列列表元素,而只是反转列表元素的排列顺序:
在这里插入图片描述
方法reverse()永久性地修改列表元素的排列顺序,但随时可恢复到原来的排列顺序,为此只需要对列表再次调用reverse()即可.

6.4确定列表的长度
使用函数len()课快速获悉列表的长度,下面示列中,列表包含6个元素,因此其长度为6
在这里插入图片描述
7.使用列表避免错误
索引-1总是返回最后一个列表元素.
在这里插入图片描述

仅当列表为空时,这种访问最后一个元素的方式才会导致错误:
在这里插入图片描述
如果发生索引错误,可以将列表或其长度打印出来,列表可能与你以为的截然不同,通过查看列表或包含的元素数,可帮助你找出逻辑错误.

7.1 创建数值列表
需要存储一组数字的原因有很多,列如,在游戏中,需要跟踪每个角色的位置,还可能需要跟踪玩家的几个最高得分,在数据可视化中,处理的几乎都是由数字(如温度、距离、人口数量、经度、纬度)组合集合.

列表非常适合用于存储数字集合,而python提供和很多工具,可帮助你高效地处理数字列表,明白使用这些工具后,即便有百万元素,你的代码也能很好运行.

7.1.1使用函数range()
python函数range()让你能够轻松地生成一系列的数字,可以像下面一样使用函数range()来打印一系列数字:

他会打印1~6的数字,但实际上它不会打印数字6
在这里插入图片描述
7.1.2 使用range()创建数字列表
要创建数字列表,可以使用函数list()将range()的结果直接转化为列表,如果将range()作为list()的参数,输出将为一个数字列表.

在前一节实例中,我们打印了一系列数字,我们要将这些数字转换为一个列表,可使用list():
在这里插入图片描述
使用range()时,还可以指定步长,列如,下面打印代码1~10的偶数:

在这个示列中,函数range()从2开始,然后不断最加2,直到达到或超过最终值11,因此输出如下:
在这里插入图片描述
使用函数range()几乎能够创建任何需要的数字集,例如,如何 创建一个列表,其中包含前10个整数(即1~10)的平方呢?在python中,两个星号(**)表示乘方运算,下面的代码演示了如何将前10个整数的平方加入到一个列表中:
在这里插入图片描述
为让这些代码更简洁,可不使用临时变量square,而直接将计算得到的值附加到列表末尾.
在这里插入图片描述
7.1.3 对数字列表执行简单的统计计算
专门处理数字列表函数,轻松找出列表最大、最小、总合:
在这里插入图片描述
8.使用列表的一部分
前面学习了如何访问单个列表元素,如何处理列表的所有元素,我们还可以处理列表的部分元素—python称之为切片

8.1切片
要创建切片,可指定要使用的第一个元素和最后一个元素的索引,与函数range()一样,oython在达到你指定的第二个索引前面的元素后停止,要输出列表中前三个元素,需要指定索引0~3,这将输出0、1和2的元素.

下面处理人的成员列表:
打印该列表的一个切片,其中包含三名队员,输出也是一个列表,其中包含前三名队员:
在这里插入图片描述
你可以生成列表的任何子集,列如,你要提取列表的第2-4个元素,可将其实索引指定为1,终止为4:
在这里插入图片描述
如果没有指定第一个索引,python自动从列表开头开始
在这里插入图片描述
要让切片终止为列表末尾,也可使用类似的语法,例如,如果要提取从第3个元素到列表末尾的所有元素,可将起始索引指定为2,并省略终止索引.
python将返回第3个元素到列表末尾的所有元素.
在这里插入图片描述
无论列表多长,这种语法都能够让你输出从特定位置到列表末尾的所有元素,前面说过,负数索引返回离列表末尾相应距离的元素,因此你可以输出列表末尾的任何切片.
在这里插入图片描述
8.2遍历切片
如果要遍历列表的部分元素,可在for循环中使用切片,在下面的示列中,我们遍历前3的人,并打印他们的名字.
在这里插入图片描述
8.3 复制列表
你经常需要根据需要创建全新的列表,复制列表的1工作原理,以及复制列表可提供极大帮助的一种情形.

要复制列表,可创建一个包含整个列表的切片,方法是同时省略其实索引和终止索引([ : ]),这让python创建一个起始于第一个元素,终止于最后一个元素的切片,即复制整个列表.

假设有一个列表,其中包含你最喜欢的四种食品,而你还想创另一个列表,其中包含以为朋友喜欢的所有食品,不过你喜欢的食品,这位朋友都喜欢,因此你可以复制来创建这个列表:
在这里插入图片描述

为核实我们确实有两个列表,我们现在在每个列表添加一种食品,并核实每个列表都记录了相应人员喜欢吃的食物.
在这里插入图片描述

假如入我们只是将my_food赋给friend_foods,而不是将my_foods的副本存储到friend_foos,这种语法实际上是让python将新变量friend_foods关联到包含在my_foods中的列表,因此两个变量都指向同一个列表,添加变量,两个列表都有添加的变量.
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值