python手把手教程_【Python 1-7】Python手把手教程之——详解列表List

列表

作者 | 弗拉德

来源 | 弗拉德(公众号:fulade_me)

列表,在其他语言中又被称为数组,是由一系列按特定顺序排列的元素组成。你可以创建包含字母表中所有字母、数字0~9或所有家庭成员姓名的列表。你也可以创建几个列表,把这几个列表又放在一个列表内。

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

fruits = ['Apple','Banana','Pear','Orange']

print(fruits)

['Apple','Banana','Pear','Orange']

访问列表数据

列表是有序的数据集合,每一个元素都有一个位置参数。比如上面的fruits列表里面,其中Apple的位置参数是0,Banana位置参数是1。要访问列表元素,可指出列表的名称,再指出元素的索引,并将其放在方括号内。

例如,下面的代码从列表fruits中选出第一种水果:

fruits = ['Apple','Banana','Pear','Orange']

print(fruits[0])

Apple

索引是从0开始的

所有的列表位置参数都是从0开始的而不是从1开始的,对于初学者,这个一定要记牢。如果在编码过程中发现取出的元素跟自己预期的不一样,请看看你是否犯了这种简单的错误。

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

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

fruits = ['Apple','Banana','Pear','Orange']

print(fruits[1])

print(fruits[3])

Banana

Orange

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

fruits = ['Apple','Banana','Pear','Orange']

print(fruits[-1])

Orange

这里返回的是Orange。这种语法很有用,因为你经常需要在不知道列表长度的情况下访问最后的元素。

这种约定也适用于其他负数索引,例如:索引-2返回倒数第二个列表元素, 索引-3返回倒数第三个列表元素,以此类推。

修改列表元素

要修改列表元素,可指定列表名和要修改的元素的索引,再指定该元素的新值。

例如,假设有一个水果列表,其中的第一个元素为Apple,如何修改它的值呢?

fruits = ['Apple','Banana','Pear','Orange']

print(fruits[0])

print(fruits)

Apple

['Apple','Banana','Pear','Orange']

# 开始把第一个元素修改为 Cherry

fruits[0] = 'Cherry'

print(fruits[0])

print(fruits)

Cherry

['Cherry','Banana','Pear','Orange']

在列表中添加元素

你可能出于很多原因要在列表中添加新元素。比如商场里又新增加了一种水果,需要在fruits里面中再新增一种水果。Python提供了多种在既有列表中添加新数据的方式。

1.在列表末尾添加元素

在列表中添加新元素时,最简单的方式是将元素附加到列表末尾。

fruits = ['Apple','Banana','Pear','Orange']

print(fruits)

fruits.append('Cherry')

print(fruits)

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

['Apple','Banana','Pear','Orange']

['Apple','Banana','Pear','Orange','Cherry']

append()可以很好的满足我们动态创建数组的需求。例如,我们可以先创建一个空的列表,在使用一系列的append()语句来动态的添加元素。

例如:

fruits = []

fruits.append('Apple')

fruits.append('Banana')

fruits.append('Pear')

print(fruits)

['Apple','Banana','Pear']

这种创建方式比较常见,因为很多时候,我们在代码的执行过程中才会知道哪些元素需要添加到列表中,哪些元素不需要添加。

2.在列表中插入元素

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

fruits = ['Apple','Banana','Pear']

fruits.insert(0,'Orange')

print(fruits)

['Orange','Apple','Banana','Pear']

在该实例中,Orange被插入到了索引为0的这个位置。这种操作会使列表内的其他的每个元素都右移一个位置。

需要注意的是:插入数据的索引不能超过列表当前最大的索引值,如果我们执行fruits.insert(10,'Orange')就会报错。你可以试一下。

从列表中删除元素

我们经常需要从列表中删除一个元素,比如说有Apple这种水果因为缺货需要下架了,我们需要将Apple从列表中移除掉。你可以根据位置或值来删除列表中的元素。

1.使用del语句删除元素

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

fruits = ['Apple','Banana','Pear']

print(fruits)

['Apple','Banana','Pear']

del fruits[0]

print(fruits)

['Banana','Pear']

使用del可删除任何位置处的列表元素,条件是知道其索引。下例演示了如何删除fruits列表中的第二个元素

fruits = ['Apple','Banana','Pear']

print(fruits)

['Apple','Banana','Pear']

del fruits[1]

print(fruits)

['Apple','Pear']

从输出来看,第二个元素已经被删除了。

2.使用方法pop()删除元素

有时候,你要将元素从列表中删除,并接着使用它的值。比如你下架了某种水果,需要把这种水果放入到明天的采购列表中。

方法pop()可删除列表末尾的元素,并让你能够接着使用它。

fruits = ['Apple','Banana','Pear']

print(fruits)

poped_fruit = fruits.pop()

print(fruits)

['Apple', 'Banana']

print(poped_fruit)

Pear

执行pop()方法后,原数组最后一个元素被移除掉且最后一个元素作为返回值被返回。

3.pop列表中任何位置处的元素

想必你已经猜到了,我们只需要在pop()方法内传入想移除的元素索引就可以。

fruits = ['Apple','Banana','Pear']

print(fruits)

['Apple', 'Banana', 'Pear']

first_fruit = fruits.pop(0)

print(first_fruit)

Apple

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

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

4.根据值删除元素

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

fruits = ['Apple','Banana','Pear']

print(fruits)

['Apple', 'Banana', 'Pear']

fruits.remove('Apple')

print(fruits)

['Banana', 'Pear']

方法remove()只删除在列表中出现的第一个指定的值。也就是说假如Apple在fruits列表中出现了多次,调用remove()方法,只会删除第一个Apple。

fruits = ['Apple','Banana','Pear','Apple']

print(fruits)

['Apple', 'Banana', 'Pear','Apple']

fruits.remove('Apple')

print(fruits)

['Banana', 'Pear','Apple']

整合列表

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

使用方法sort()对列表进行永久性排序

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

fruits = ['pear','banana','apple']

print(fruits)

['pear', 'banana', 'apple']

fruits.sort()

print(fruits)

['apple', 'banana', 'pear']

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

我们还可以按与字母顺序相反的顺序排列列表元素,为此,只需向sort()方法传递参数reverse=True即可。

fruits.sort(reverse=True)

print(fruits)

['pear', 'banana', 'apple']

使用函数sorted()对列表进行临时排序

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

fruits = ['pear','banana','apple']

print(fruits)

['pear', 'banana', 'apple']

print(sorted(fruits))

['apple', 'banana', 'pear']

# 再一次输出 fruits

print(fruits)

['pear', 'banana', 'apple']

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

在并非所有的值都是小写时,按字母顺序排列列表要复杂些,这个问题我们后面再详细解答。

倒序输出列表

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

fruits = ['pear','banana','apple']

print(fruits)

['pear', 'banana', 'apple']

fruits.reverse()

print(fruits)

['apple', 'banana', 'pear']

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

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

列表的长度

使用函数len()可快速获悉列表的长度

fruits = ['pear','banana','apple']

len(fruits)

3

获取列表的长度在开发过程中很有用,比如我们利用len()方法一下就可以获取到当前有多少种水果正在销售。

动手试一试

7-1 将一些朋友的姓名存储在一个列表中,并将其命名为 names。依次访问该列表中的每个元素,从而将每个朋友的姓名都打印出来。

7-2 嘉宾名单: 如果你可以邀请任何人一起共进晚餐(无论是在世的还是故去的),你会邀请哪些人?请创建一个列表,其中包含至少 3 个你想邀请的人,然后,打印列表。

7-3 修改嘉宾名单:你刚得知有位嘉宾无法赴约,因此需要另外邀请一位嘉宾。修改嘉宾名单,将无法赴约的嘉宾的姓名替换为新邀请的嘉宾的姓名。

然后再一次打印这个列表。

7-4 添加嘉宾:你刚找到了一个更大的餐桌,可容纳更多的嘉宾。请想想你还想邀请哪三位嘉宾。

使用 insert()将一位新嘉宾添加到名单开头。

使用 insert()将另一位新嘉宾添加到名单中间。

使用 append()将最后一位新嘉宾添加到名单末尾。

7-5 缩减名单: 你刚得知新购买的餐桌无法及时送达,因此只能邀请两位嘉宾。 使用pop()不断地删除名单中的嘉宾,直到只有两位嘉宾为止。每次从名单中弹出一位嘉宾时,都打印一下。

7-7 放眼世界: 想出至少 5 个你渴望去旅游的地方。将这些地方存储在一个列表中,并确保其中的元素不是按字母顺序排列的。按原始排列顺序打印该列表。不要考虑输出是否整洁的问题,只管打印原始Python 列表。

使用 sorted()按字母顺序打印这个列表,同时不要修改它。再次打印该列表,核实排列顺序未变。

使用 sorted()按与字母顺序相反的顺序打印这个列表,同时不要修改它。再次打印该列表,核实排列顺序未变。

使用 reverse()修改列表元素的排列顺序。打印该列表,核实排列顺序确实变了。

使用 reverse()再次修改列表元素的排列顺序。打印该列表,核实已恢复到原来的排列顺序。

使用 sort()修改该列表,使其元素按字母顺序排列。打印该列表,核实排列顺序确实变了。

使用 sort()修改该列表,使其元素按与字母顺序相反的顺序排列。打印该列表,核实排列顺序确实变了。

想查看作业答案可以去我的Githu仓库

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/543211.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[Typecho主题] modernist

Modernist 主题来自 Hexo. 是基于 modernist theme 修改 演示站点 安装 git clone https://github.com/uidea/typecho-theme-modernist.git themes/modernist 启用 外观 -> Modernist Theme -> 启用即可 更新 cd themes/modernist git pull 下载地址:https://…

python预定义_【Python】python类中方法的预定义

知乎问题:像这个图片里面显示的,self.prediction首先声明了下然后下面给出了定义,然后optimize又调用这个函数但是没有用self.prediction()这样的方式而是像用变量一样直接用self.prediction,,像请教一下这是什么操作?…

python md5加密_Python MD5加密实例详解

详解Python MD5加密 Python 3下MD5加密 # 由于MD5模块在python3中被移除 # 在python3中使用hashlib模块进行md5操作 import hashlib # 待加密信息 str this is a md5 test. # 创建md5对象 hl hashlib.md5() # Tips # 此处必须声明encode # 若写法为hl.update(str) 报错为&…

【IOS-COCOS2D-X 游戏开发之四】COCOS2DX创建ANDROID NDK新项目并编译导入ECLIPSE中正常运行!...

本站文章均为 李华明Himi 原创,转载务必在明显处注明: 转载自【黑米GameDev街区】 原文链接: http://www.himigame.com/android-game/645.html此篇针对较早的-x引擎讲解的,最新的可以参考: 【Cocos2d-X(2.x) 游戏开发系列之二】cocos2dx最新2…

2天后mysql_mysql 学习笔记 第二天

插入表格数据:Insert into table_name set columns_1value1,columns_2value2,对于没有赋值的列,将会取默认值,并且这个方法只能一次插入一个数据利用文本方式插入数据:Load data local infile‘径’into table table_name;Select 的通用形式:…

mysql查看日志命令_面对成百上千台服务器产生的日志,试试这款轻量级日志搬运神器!...

Filebeat简介Filebeat是一款轻量级日志采集器,可用于转发和汇总日志与文件。Filebeat内置有多种模块(Nginx、MySQL、Redis、Elasticsearch、Logstash等),可针对常见格式的日志大大简化收集、解析和可视化过程,只需一条…

css 百分比 怎么固定正方形_css样式写出三角形,宽高自适应的正方形,扇形!...

闲来无事练习一下常见的css样式,希望大家能指点一二&#xff01;1用css实现一个三角形&#xff01;原理用border属性<!实现它的原理那就要弄明白border属性&#xff0c;border是一个复合属性border-width 指定边框的宽度border-style 指定边框的样式border-color 指定边框的…

用lsb_release -a 查看linux版本

1、要通过yum 安装上这个命令的软件包 yum -y install redhat-lsb 2、lsb_release -a 查看linux版本信息

java爬虫自动识别验证码_简单Java爬虫(一)爬取手机号码

原创 野狗菌 希望你能喜欢 今天关于本文&#xff1a;本文介绍一个简单Java爬虫&#xff0c;获取网页源码&#xff0c;爬取电话号码。本篇教程用我的博客一个测试网页演示。——野狗菌【希望你能喜欢】测试页面&#xff1a;https://www.wayteam.xyz/archives/phonenumber源代码&…

java分隔符 字符串_用Java构建带分隔符的字符串的最佳方法是什么?

在Java应用程序中工作时&#xff0c;最近我需要组合一个用逗号分隔的值列表&#xff0c;以传递给另一个Web服务&#xff0c;而无需事先知道会有多少个元素。我能想到的最好的办法是这样的&#xff1a;public String appendWithDelimiter( String original, String addition, St…

ASP.NET Session丢失问题原因及解决方案[转]

不得不老调重弹 正常操作情况下会有ASP.NET Session丢失的情况出现。因为程序是在不停的被操作&#xff0c;排除Session超时的可能。另外&#xff0c;Session超时时间被设定成60分钟&#xff0c;不会这么快就超时的。 现在我就把原因和解决办法写出来。 ASP.NET Session丢失原因…

linux内核_Linux内核编程风格简介

01不同的语言风格当今世界上一共有5000多种语言。不同的国家、民族和地区&#xff0c;说着不同的语言。每个民族不一定有自己的文字&#xff0c;但一般都会有自己的语言。即使是同一种语言&#xff0c;在不同的时代、不同的地区和群体&#xff0c;说话的方式和语言风格也各不相…

Swift使用CoreLocation,你必须要看这一篇

CoreLocation&#xff0c;在我们这里讨论的是一个最常用的东西&#xff0c;就是用Location Manger获取用户当前的位置。 整个的来说非常简单。只要这样&#xff1a; import CoreLocation需要使用整个框架&#xff0c;那么引入整个框架就是必须的。然后需要在你的类里实现一个pr…

python全景图像拼接_Python+OpenCV实现图像的全景拼接

本文实例为大家分享了PythonOpenCV实现图像的全景拼接的具体代码&#xff0c;供大家参考&#xff0c;具体内容如下 环境&#xff1a;python3.5.2 openCV3.4 1.算法目的 将两张相同场景的场景图片进行全景拼接。 2.算法步骤 本算法基本步骤有以下几步&#xff1a; 步骤1&#x…

非你莫属 java全球排名_TIOBE:2018年5月全球编程语言排行榜

原标题&#xff1a;TIOBE&#xff1a;2018年5月全球编程语言排行榜TIOBE 刚刚发布了 5 月编程语言排行榜。Scala 经过长时间的沉淀&#xff0c;本月终于进入了 TIOBE 榜单的前 20 名。Scala 是一种 JVM 上运行的函数式编程语言&#xff0c;可与 Java 一起或作为 Java 的替代品使…

人生中最【无用】的二十件事

学会取舍&#xff0c;将是你人生的必修课。 丢掉这20件东西&#xff0c;你一定会成为更好的自己 我们之所以会觉得活的痛苦&#xff0c;活的乏味&#xff0c;根源在于你始终无法做到潇洒的放手。顾忌太多&#xff0c;想要的太多&#xff0c;最终一无所获。 你从幼稚走向成熟的过…

python动态方法_python中的动态方法生成

这是一个元类&#xff0c;它将__getattr__函数从类定义添加回元类本身。这就避免了在多个地方定义函数&#xff0c;或者作为预先定义并单独添加到元类和类中的单独全局函数来定义。在class Meta(type): def __new__(mcls, name, bases, dikt): fgetattr dikt.get(__getattr__)…

java光标位置无效_ResultSet.getString(1)引发java.sql.SQLException:当前光标位置的无效操作...

当我运行以下servlet时&#xff1a;// package projectcodes;public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException {String UserID request.getParameter("UserID");String UserPassword request.g…

python web服务器 apache_Windows下搭建Apache+Django+Python Web服务环境

最近在学Django&#xff0c;想用Apache搭建一个服务器环境&#xff0c;因此在网上看了好多资料&#xff0c;很多都是用Python2.6和Apache2.2搭建的环境&#xff0c;不过我还是想用Python35和Apache24来搭建&#xff0c;具体环境如下&#xff1a; 参考资料&#xff1a; Apache配…

Python_List对象内置方法详解

前言 在上一篇中介绍了Python的序列和String类型的内置方法&#xff0c;本篇继续学习作为序列类型成员之一的List类型的内置方法。 软件环境 系统 UbuntuKylin 14.04软件 Python 2.7.3IPython 4.0.0列表List 列表是一种容器&#xff0c;存放内存对象的引用。即是任意内存对象的…