Python--列表简介

一、列表

列表由一系列按特定顺序排列的元素组成。你可以创建包含字母表中所有字母、数字0-9或所有家庭成员姓名的列表;也可以将任何东西加入列表中,其中的元素之间可以没有任何关系。列表通常包含多个元素,因此给列表指定一个表示复数的名称(如letters、digits或names)是个不错的主意。

在Python中,用方括号([])表示列表,并用逗号分隔其中的元素。下面是一个简单的列表示例,其中包含几种水果:



如果让Python将列表打印出来,Python将打印列表的内部表示,包括方括号。

鉴于这不是你要用户看到的输出,下面来学习如何访问列表元素。

1. 访问列表元素

列表是有序集合,因此要访问列表的任意元素,只需将该元素的位置(索引)告诉Python即可。要访问列表元素,可指出列表的名称,再指出元素的索引,并将后者放在方括号内。

例如:下面的代码从列表fruits中提取第一种水果:



这里演示了访问列表元素的语法。当你请求获取列表元素时,Python只返回该元素,而不包括方括号。

这正是你要让用户看到的结果——整洁、干净的输出。

你还可以对任意列表元素调用字符串方法。例如,可使用方法title()让元素'apple'的格式更整洁:



这个示例的输出与前一个示例相同,只是首字母A是大写的。

2. 索引从0而不是1开始

在Python中,第一个列表元素的索引为0,而不是1。大多数编程语言是如此规定的,这与列表操作的底层实现相关。如果结果出乎意料,请看看你是否犯了简单的差一错误。

第二个列表元素的索引为1。根据这种简单的技术方式,要访问列表的任何元素,都可将其位置减一,并将结果作为索引、例如,要访问第四个元素,可使用索引3。

下面的代码访问索引1和索引3处的水果:



这些代码返回列表中的第二个和第四个元素。

Python为访问最后一个列表元素提供了一种特殊语法。通过将索引指定为-1,可让Python返回最后一个列表元素:



这段代码返回“banana”。这种语法很有用,因为你经常需要在不知道列表长度的情况下访问最后的元素。这种约定也适合于其他负数索引。例如,索引-2返回倒数第二个列表元素,索引-3返回倒数第三个列表元素,依此类推。

3. 使用列表中的各个值

你可以像使用其他变量一样使用列表中的各个值。例如,可以使用f字符串根据列表中的值来创建消息。

下面尝试从列表中提取第一个水果,并使用这个值创建一条消息:



我们使用fruits[0]的值生成了第一个句子,并将其赋给变量message。输出是一个简单的句子,其中包含列表中的第一款自行车。

二、修改、添加和删除元素

你创建的大多数列表将是动态的,这意味着列表创建后,将随着程序的运行增删元素。例如,你创建一个元素,要求玩家射杀从天而降的外星人。为此,可在开始时将一些外星人存储在列表中,然后每当有外星人被射杀时,都将其从列表中删除,而每次有新的外星人出现在屏幕上时,都将其添加到列表中。在整个游戏运行期间,外星人列表的长度将不断变化。

1. 修改列表元素

修改列表元素的语法与访问列表元素的语法类似。要修改列表元素,可指定列表名和要修改的元素的索引,再指定该元素的新值。

例如,还是之前的水果列表,其中的第一个元素为“apple”,如何修改它的值呢?



首先定义一个水果列表,其中的第一个元素为“apple”。接下来,将第一个元素的值改为“pineapple”。输出表明,第一个元素的值确实变了,但其他列表元素的值没变。

当然,你可以修改任意列表元素的值,而不仅仅是第一个元素的值。

2. 在列表中添加元素

你可能处于众多原因要在列表中添加新元素。例如,你可能希望游戏中出现新的外星人、添加可视化数据或给网站添加新注册的用户。Python提供了多种在既有列表中添加新数据的方式。

2.1 在列表末尾添加元素

在列表中添加新元素时,最简单的方式是将元素附加(append)到列表。给列表附加元素时,它将添加到列表末尾。继续使用前一个示例中的列表,在其末尾添加新元素“pineapple”:



方法append()将元素“pineapple”添加到列表末尾,而不影响列表中的其他所有元素。

方法append()让动态地创建列表易如反掌。例如,你可以先创建一个空列表,再使用一系列函数调用append()来添加元素。下面来创建一个空列表,再在其中添加元素“apple”、“orange”、“strawberry”、“banana”:



最终的列表与前述示例中的列表完全相同。

这种歌创建列表的方式极为常见,因为经常要等程序运行后,你才知道用户要在程序中存储哪些数据。为控制用户,可首先创建一个空列表,用于存储用户将要输入的值,然后将用户提供的每个新值附加到列表中。

2.2 在列表中插入元素

使用方法insert()可在列表的任何位置添加新元素。为此,你需要指定新元素的索引和值。



在这个示例中,值“pineapple”被插入到了列表开头。方法Insert()在索引0处添加空间,并将值“pineapple”存储到这个地方。这种操作将列表中既有的每个元素都右移一个位置。

3. 从列表中删除元素

你经常需要从列表中删除一个或多个元素。例如,玩家将空中的一个外星人射杀后,你很可能要将其从存活的外星人列表中删除;当用户在你创建的Web应用中注销账户时,你就需要将该用户从活动用户列表中删除。你可以根据位置或值来删除列表中的元素。

3.1 使用del语句删除元素

如果知道要删除的元素在列表中的位置,可使用del语句。



使用del删除了列表fruits中的第一个元素“apple”。

使用del可删除任意位置处的列表元素,条件时知道其索引。例如,下面演示了如何删除前述列表中的第二个元素“orange”:



在这两个示例中,使用del语句将值从列表中删除后,你就无法再访问它了。

3.2 使用方法pop()删除元素

有时候,你要讲元素从列表中删除,并接着使用它的值。例如,你可能需要获取刚被射杀的外星人的x坐标和y坐标,以便在相应的位置显示爆炸效果;在Web应用程序中,你可能要将用户从活跃成员列表中删除,并将其加入到非活跃成员列表中。

方法pop()删除列表末尾的元素,并让你能够接着使用它。术语弹出(pop)源自这样的类比:列表就像一个栈,而删除列表末尾的元素相当于弹出栈顶元素。

下面来从列表fruits中弹出一个水果:



首先定义并打印列表fruits。接下来,从这个列表中弹出一个值,并将其赋给变量popped_fruit中。然后打印这个列表,以核实从中删除了一个值。最后打印弹出的值,以证明我们依然能够访问被删除的值。

输出表明,列表末尾的值“banana”已删除,它现在被赋给了变量popped_fruits。

方法pop()有什么用处呢?假设列表中的水果是按购买时间存储的,就可使用方法pop()打印一条消息,指出最后购买的是哪种水果:



输出是一个简单的句子,指出了最新购买的是哪种水果。

3.3 弹出列表中任何位置处的元素

实际上,可以使用pop()来删除列表中任意位置的元素,只需在圆括号中指定要删除元素的索引即可。



首先弹出列表中的第二种水果,然后打印一条有关这个水果的消息。输出是一个简单的句子,描述了我最后购买的水果。

注意:

别忘了,每当你使用pop()时,被弹出的元素就不再在列表中了。

如果你不确定该使用del语句还是pop()方法,下面是一个简单的判断标准:如果你要从列表中删除一个元素,且不再以任何方式使用它,就使用del语句;如果你要在删除元素后还能继续使用它,就使用方法pop()。

3.4 根据值删除元素

有时候,你不知道要从列表中删除的值所处的位置。如果只知道要删除的元素的值,可使用方法remove()。

例如,假设要从列表fruits中删除值“orange”。



方法remove()让Python确定“orange”出现在列表的什么地方,并将该元素删除。

使用remove()从列表中删除元素时,也可接着使用它的值。下面删除值“strawberry”并打印一条消息,指出要将其从列表中删除的原因:



定义列表后,将值“strawberry”赋给变量too_expensive。接下来,使用这个变量来告诉Python将哪个值从列表中删除。最后,值“strawberry”已经从列表中删除,但可通过变量too_expensive来访问它。这让我们能够打印一条消息,指出将“strawberry”从列表fruits中删除的原因。

注意:

方法remove()只删除第一个指定的值。如果要删除的值可能在列表中出现多次,就需要使用循环来确保将每个值都删除。

三、组织列表

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

1. 使用方法sort()对列表永久排序

Python方法sort()让你能够较为轻松地对列表进行排序。假设你有一个水果列表,并要让其中的水果按字母顺序排列。为简化这项任务,假设该列表中的所有值都是小写的。



方法sort()永久性地修改列表元素的排列顺序。现在。水果是按字母顺序排列的,再也无法恢复到原来的排列顺序。

还可以按与字母顺序相反的顺序排列列表元素,只需向sort()方法传递参数reverse=True即可。下面的示例将水果列表按与字母书序相反的顺序排列:



同样,对列表元素排列顺序的修改是永久性的。

2. 使用函数sorted()对列表临时排序

要保留列表元素原来的排列顺序,同时以特定的顺序呈现它们,可使用函数sorted()。函数sorted()让你能够按特定顺序显示列表元素,同时不影响它们在列表中的原始排列顺序。

下面尝试来对水果列表调用这个函数。



首先按原始顺序打印列表,再按字母顺序显示该列表。以特定顺序显示列表后,我们进行核实,确认列表元素的排列顺序与以前相同。

注意:

调用函数sorted()后,列表元素的排列顺序并没有变。如果要按与字母顺序相反的顺序显示列表,也可向函数sorted()传递参数reverse=True

在并非所有的值都是小写时,按字母顺序排列列表要复杂些。决定排列顺序时,有多重解读大写字母的方式,要指定准确的排列顺序,可能比我们这里所做的要复杂。

3. 逆序打印列表

要反转列表元素的排列方式,可使用方法reverse()。假设水果列表是按购买时间排列的,可轻松地按相反的顺序排列其中的水果:



注意:

reverse()不是按与字母顺序相反的顺序排列列表元素,而只是反转列表元素的排列顺序。

方法reverse()永久性地修改列表元素的排列顺序,但可随时恢复到原来的排列顺序,只需对列表再次调用reverse()即可。

4. 确定列表的长度

使用函数len()可快速获悉列表的长度。在下面的示例中,列表包含四个元素,因此其长度为4:



需要完成如下任务时,len()很有用:明确还有多少个外星人未被射杀,确定需要管理多少项可视化数据,计算网站有多少注册用户,等等。

注意:

Python计算列表元素时从1开始,因此确定列表长度时,你应该不会遇到差一错误。

四、使用列表时避免索引错误

刚开始使用列表时,经常会遇到一种错误。假设你有一个包含四个元素的列表,却要求获取第五个元素,这将导致索引错误



Python试图向你提供位于索引4处的元素,但它搜索列表fruits时,却发现索引4处没有元素。鉴于列表索引差一的特征,这种错误很常见。有些人从1开始数,因此以为第四个元素的索引为4。然而在Python中,第四个元素的索引为3,因为索引是从0开始的。

索引错误意味着Python在指定索引处找不到元素。程序发生索引错误时,请尝试将指定的索引减1,然后再次运行程序,看看结果是否正确。

别忘了,每当需要访问最后一个列表元素时,都可使用索引-1。这在任何情况下都行之有效,即便你最后一次访问列表后,其长度发生了变化:



索引-1总是返回最后一个列表元素,这里为值“banana”。

仅当列表为空时,这种访问最后一个元素的方式才会导致错误:



列表fruits不包含任何元素,因此Python返回一条索引错误消息。

注意:

发生索引错误却找不到解决办法时,请尝试将列表或其长度打印出来。列表可能与你以为的截然不同,在程序对其进行了动态处理时尤其如此。通过查看列表或其包含的元素数,可帮助你找出这种逻辑错误。

Python--列表简介的更多相关文章

  1. Python列表简介和遍历

    一.Python3列表简介 1.1.Python列表简介 序列是Python中最基本的数据结构 序列中的每个值都有对应的位置值,称之为索引,第一个索引是0,第二个索引是1,以此类推. Python有6 ...

  2. python列表简介

    什么是列表?如何使用列表?https://docs.python.org/3/library/stdtypes.html#sequence-types-list-tuple-range 列表相关知识: ...

  3. 第3.2节 Python列表简介

    鉴于Python中列表(list)的强大功能,本节及后面至少有一节都是介绍列表相关的知识,本节先介绍基本的列表知识. 一. 列表的定义 列表是一种可以修改的序列,它有点类似于c语言中的数组,在Pyth ...

  4. Python编程从入门到实践笔记——列表简介

    Python编程从入门到实践笔记——列表简介 #coding=utf-8 #列表——我的理解等于C语言和Java中的数组 bicycles = ["trek","cann ...

  5. python入门学习:2.列表简介

    python入门学习:2.列表简介 关键点:列表 2.1 列表是什么2.2 修改.添加和删除元素2.3 组织列表 2.1 列表是什么   列表,是由一系列按特定顺序排列的元素组成.你可以创建包含字母表 ...

  6. 【Python编程:从入门到实践】chapter3 列表简介

    chapter3 列表简介3.1 列表是什么 列表是一系列按特定顺序排列的元素组成. bicycle = ['trek','cannondale'] print bicycle 3.1.1 访问列表元 ...

  7. (转)python 列表与元组的操作简介

    python 列表与元组的操作简介 原文:https://www.cnblogs.com/QG-whz/p/4782809.html 阅读目录 列表 list函数 列表的基本操作 列表方法 元组 tu ...

  8. Python的简介以及安装和第一个程序以及用法

    Python的简介: 1.Python是一种解释型.面向对象.动态数据类型的高级程序设计语言.自从20世纪90年代初Python语言诞生至今,它逐渐被广泛应用于处理系统管理任务和Web编程.Pytho ...

  9. [Python] heapq简介

    [Python] heapq简介 « Lonely Coder [Python] heapq简介 judezhan 发布于 2012 年 8 月 8 日 暂无评论 发表评论 假设你需要维护一个列表,这 ...

  10. 关于python列表的一些基础知识。

    因学校实验室要求,自学了python,一开始看书觉得太简单了,也没有多动手去尝试,直到看完了前八章突然想动手试试的时候,人傻了,深刻体会到了好记性不如烂笔头的道理,故整理一些python列表的操作. ...

随机推荐

  1. .NET 云原生架构师训练营(责任链模式)--学习笔记

    目录 责任链模式 源码 责任链模式 职责链上的处理者负责处理请求,客户只需要将请求发送到职责链上即可,无需关心请求的处理细节和请求的传递,所以职责链将请求的发送者和请求的处理者解耦了 何时使用:在处理 ...

  2. CSS基础6之盒子模型1

    盒子概述 以下是盒子模型的一个图形解释 一.内边距(填充) 属性有: (1) padding  设置所有内边距 (2) padding-top  设置上边距 (3) padding-left 设置左边 ...

  3. python + requests发起请求,接口返回400,报错“Unexpected character encountered while parsing value: G. Path”

    完整报错信息如下: {'errors': {'': ["Unexpected character encountered while parsing value: G. Path '', l ...

  4. LC 只出现一次的数字

    Given a non-empty array of integers nums, every element appears twice except for one. Find that sing ...

  5. SQLAlchemy完全入门

    最近想要学习SQLAlchemy, 发现网上的中文文档大多是机翻的, 读起来特别变扭, 因此对照着最新的英文文档梳理了一遍, 写下来记录一下 目前SQLAlchemy的版本为1.4.x, 风格处于1. ...

  6. 【Java】注解Annotation

    注解 Annotation 理解Annotation jdk 5.0 新增的功能 Annotation 其实就是代码里的特殊标记, 这些标记可以在编译, 类加载, 运行时被读取, 并执行相应的处理.通 ...

  7. JavaScript创建和获取时间的方法

    一.获取时间常用方法 1.创建时间对象 var time=new Date() //创建当前的时间信息对象 var time1=new Date(2022,1,1,10,25,30) //创建2022 ...

  8. 一段关于java NIO server端接受客户端socket连接;演示了关于channel,selector等组件的整合使用

    public class ReactorDemo { public static void main(String[] args) throws IOException { ServerSocketC ...

  9. python -m详解

    温馨提示: 本篇演示环境是Python 3.8 先python --help看下python -m参数的解释: -m mod : run library module as a script (ter ...

  10. Kubernetes中部署wordpress+mysql(六)

    经过前面的内容其实对k8s已经有了服务迁移的能力了,下面这篇文章主要是用来搭建一些后面要用的组件 一.创建wordpress命名空间 kubectl create namespace wordpres ...