列表让你能够在一个地方存储成组的信息,其中可以只包含几个元素,也可以包含数百万个元素。列表是新手可直接使用的最强大的Python功能之一,它融合了众多重要的编程概念。

一、列表是什么

列表由一系列按特定顺序排列的元素组成。

鉴于列表通常包含多个元素,给列表指定一个表示复数的名称(如letters、digits或names)是个不错的主意。

在Python中,用方括号[]来表示列表,并用逗号来分隔其中的元素。Python打印列表的内部表示,包括方括号。

1、访问列表元素

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

当你请求获取列表元素时,Python只返回该元素,而不包括方括号和引号

还可以对任何列表元素调用第2章的字符串方法。如:

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

在Python中,第一个列表元素的索引为0,而不是1。在大多数编程语言中都是如此,这与列表操作的底层实现相关。要访问列表的任何元素,都可将其位置减1,并将结果作为索引。

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

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

3、使用列表中的各个值

可像使用其他变量一样使用列表中的各个值。

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

创建的大多数列表都将是动态的,这意味着列表创建后,将随着程序的运行增删元素。

1、修改列表元素

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

2、在列表中添加元素

Python提供了多种在既有列表中添加新数据的方式。

(1)在列表末尾添加元素:append()

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

(2)在列表中插入元素:insert()可在列表的任何位置添加新元素,需要指定新元素的索引和值

3、从列表中删除元素

可以根据位置或值来删除列表中的元素

(1)使用del语句删除元素

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

使用del可删除任何位置处的列表元素,条件是知道其索引。使用del语句将值从列表中删除后,就无法再访问它了。

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

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

术语弹出(pop)源自这样的类比:列表就像一个栈,而删除列表末尾的元素相当于弹出栈顶元素。

(3)弹出列表中任何位置处的元素

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

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

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

(4)根据值删除元素

如果只知道要删除的元素的值,可使用方法remove()。

motorcycles.remove('ducati')让Python确定'ducati'出现在列表的什么地方,并将该元素删除

使用remove()从列表中删除元素时,也可接着使用它的值。

方法remove()只删除第一个指定的值。如果要删除的值可能在列表中出现多次,就需要使用循环来判断是否删除了所有这样的值。

三、组织列表

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

现在汽车是按字母顺序排列的,再也无法恢复到原来的排列顺序

还可以按与字母顺序相反的顺序排列列表元素,只需向sort()方法传递参数reverse=True,也是永久性。

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

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

注意区分用法,一个函数一个方法

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

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

3、使用方法reverse()倒着打印列表

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

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

4、函数len()确定列表的长度

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

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

程序发生索引错误时,请尝试将你指定的索引减1,然后再次运行程序,看看结果是否正确。

别忘了,每当需要访问最后一个列表元素时,都可使用索引-1。这在任何情况下都行之有效,即便你最后一次访问列表后,其长度发生了变化。仅当列表为空时,这种访问最后一个元素的方式才会导致错误。

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

#3-1姓名
#将一些朋友的姓名存储在一个列表中,并将其命名为names。
#依次访问该列表中的每个元素,从而将每个朋友的姓名都打印出来。
names = ['Guangkun Xie', 'Si Zhao', 'Neng Liu']
print(names[0])
print(names[1])
print(names[2])#3-2问候语
#使用练习3-1中的列表,但不打印每个朋友的姓名,而为每人打印一条消息
#每条消息都包含相同的问候语,但抬头为相应朋友的姓名。
names = ['Guangkun Xie', 'Si Zhao', 'Neng Liu']
message0 = "Hello," + names[0] + "!"
message1 = "Hello," + names[1] + "!"
message2 = "Hello," + names[2] + "!"
print(message0)
print(message1)
print(message2)#3-3自己的列表
#想想你喜欢的通勤方式,如骑摩托车或开汽车,并创建一个包含多种通勤方式的列表
#根据该列表打印一系列有关这些通勤方式的宣言,如“I would like to own a Hondamotorcycle”
Tongqins = ['bus', 'subway', 'car', 'bike']
message = "I would like to go to school by " + Tongqins[1]
print(message)#3-4嘉宾名单
#如果你可以邀请任何人一起共进晚餐(无论是在世的还是故去的),你会邀请哪些人?
#请创建一个列表,其中包含至少3个你想邀请的人;
#然后,使用这个列表打印消息,邀请这些人来与你共进晚餐。
people = ['Guangkun Xie', 'Si Zhao', 'Neng Liu']
message0 = people[0] + ",would you like to go to dinner with me?"
message1 = people[1] + ",would you like to go to dinner with me?"
message2 = people[2] + ",would you like to go to dinner with me?"
print(message0)
print(message1)
print(message2)#3-5修改嘉宾名单
#你刚得知有位嘉宾无法赴约,因此需要另外邀请一位嘉宾。
#以完成练习3-4时编写的程序为基础,在程序末尾添加一条print语句,指出哪位嘉宾无法赴约。
#修改嘉宾名单,将无法赴约的嘉宾的姓名替换为新邀请的嘉宾的姓名。
#再次打印一系列消息,向名单中的每位嘉宾发出邀请。
people = ['Guangkun Xie', 'Si Zhao', 'Neng Liu']
message0 = people[0] + ",would you like to go to dinner with me?"
message1 = people[1] + ",would you like to go to dinner with me?"
message2 = people[2] + ",would you like to go to dinner with me?"
print(message0)
print(message1)
print(message2)
print(people[2] + " can't attend to the dinner.")
people[2] = "Changgui"
message3 = people[2] + ",would you like to go to dinner with me?"
print(message3)#3-6添加嘉宾
#你刚找到了一个更大的餐桌,可容纳更多的嘉宾。请想想你还想邀请哪三位嘉宾。
#以完成练习3-4或练习3-5时编写的程序为基础
#在程序末尾添加一条print语句,指出你找到了一个更大的餐桌。
#使用insert()将一位新嘉宾添加到名单开头。
#使用insert()将另一位新嘉宾添加到名单中间。
#使用append()将最后一位新嘉宾添加到名单末尾。
#打印一系列消息,向名单中的每位嘉宾发出邀请。
people = ['Guangkun Xie', 'Si Zhao', 'Neng Liu']
message0 = people[0] + ",would you like to go to dinner with me?"
message1 = people[1] + ",would you like to go to dinner with me?"
message2 = people[2] + ",would you like to go to dinner with me?"
print(message0)
print(message1)
print(message2)
print("Oh, I have found a bigger desk.")
people.insert(0,"Dajiao")
people.insert(2,"Yutian")
people.append("Xiaomeng")
print(people)
for i in range(6):message = people[i] + ",would you like to go to dinner with me?"print(message)#3-7缩减名单
#你刚得知新购买的餐桌无法及时送达,因此只能邀请两位嘉宾。
#以完成练习3-6时编写的程序为基础
#在程序末尾添加一行代码,打印一条你只能邀请两位嘉宾共进晚餐的消息。
#使用pop()不断地删除名单中的嘉宾,直到只有两位嘉宾为止。
#每次从名单中弹出一位嘉宾时,都打印一条消息,让该嘉宾知悉你很抱歉,无法邀请他来共进晚餐。
#对于余下的两位嘉宾中的每一位,都打印一条消息,指出他依然在受邀人之列。
#使用del将最后两位嘉宾从名单中删除,让名单变成空的。
#打印该名单,核实程序结束时名单确实是空的。
people = ['Guangkun Xie', 'Si Zhao', 'Neng Liu']
message0 = people[0] + ",would you like to go to dinner with me?"
message1 = people[1] + ",would you like to go to dinner with me?"
message2 = people[2] + ",would you like to go to dinner with me?"
print(message0)
print(message1)
print(message2)
print("Oh, I have found a bigger desk.")
people.insert(0,"Dajiao")
people.insert(2,"Yutian")
people.append("Xiaomeng")
print(people)
for i in range(6):message = people[i] + ",would you like to go to dinner with me?"print(message)
print("I'sorrry. There is something wrong, I can only invite two person to dinner with me.")
for i in range(4):people.pop(0)print(people)
for i in range(2):message = "Hi "+people[i] + ",you are invited to dinner with me."print(message)
del people[0]
print(people)
del people[0]
print(people)#3-8放眼世界
#想出至少5个你渴望去旅游的地方,将这些地方存储在一个列表中,并确保其中的元素不是按字母顺序排列的,按原始排列顺序打印该列表
#使用sorted()按字母顺序打印这个列表,同时不要修改它。再次打印该列表,核实排列顺序未变。
#使用sorted()按与字母顺序相反的顺序打印这个列表,同时不要修改它。再次打印该列表,核实排列顺序未变。
#使用reverse()修改列表元素的排列顺序,打印该列表,核实排列顺序确实变了。
#使用reverse()再次修改列表元素的排列顺序。打印该列表,核实已恢复到原来的排列顺序。
#使用sort()修改该列表,使其元素按字母顺序排列,打印该列表,核实排列顺序确实变了。
#使用sort()修改该列表,使其元素按与字母顺序相反的顺序排列。打印该列表,核实排列顺序确实变了。
places = ["hangzhou", "yunnan", "chengdu", "dali", "xizang"]
print(places)
print(sorted(places))
print(places)
print(sorted(places,reverse=True))
print(places)
places.reverse()
print(places)
places.reverse()
print(places)
places.sort()
print(places)
places.sort(reverse=True)
print(places)#3-9晚餐嘉宾
#在完成练习3-4~练习3-7时编写的程序之一中,使用len()打印一条消息,指出你邀请了多少位嘉宾来与你共进晚餐。
people = ['Guangkun Xie', 'Si Zhao', 'Neng Liu']
message0 = people[0] + ",would you like to go to dinner with me?"
message1 = people[1] + ",would you like to go to dinner with me?"
message2 = people[2] + ",would you like to go to dinner with me?"
print(message0)
print(message1)
print(message2)
print("Oh, I have found a bigger desk.")
people.insert(0,"Dajiao")
people.insert(2,"Yutian")
people.append("Xiaomeng")
print(people)
for i in range(6):message = people[i] + ",would you like to go to dinner with me?"print(message)
print(len(people))

python修改列表指定位置的_第三章 列表简介相关推荐

  1. python课本第三章答案idle_第三天任务 (【基于Python编程从入门到实践】第三章 列表 书本及动手试一试)...

    3.1列表什么是列表 列表是由 一系列特定顺序排列的元素组成的 用方括号[]来表示列表 并用逗号来分隔其中的元素 访问列表元素 索引指定访问的列表元素 使用列表中的各个值 3--1 动手试一试 3.1 ...

  2. python 句柄窗口指定位置截图_对Python获取屏幕截图的4种方法详解

    Python获取电脑截图有多种方式,具体如下: PIL中的ImageGrab模块 windows API PyQt pyautogui PIL中的ImageGrab模块 import time imp ...

  3. 【Python自然语言处理】读书笔记:第三章:处理原始文本

    本章原文链接:https://usyiyi.github.io/nlp-py-2e-zh/3.html 3 处理原始文本 import nltk, re, pprint from nltk impor ...

  4. OpenCV函数简记_第三章数字图像的滤波处理(方框,均值,高斯,中值和双边滤波)

    系列文章目录 OpenCV函数简记_第一章数字图像的基本概念(邻域,连通,色彩空间) OpenCV函数简记_第二章数字图像的基本操作(图像读写,图像像素获取,图像ROI获取,图像混合,图形绘制) Op ...

  5. 《精通数据仓库设计》中英对照_第三章

    <精通数据仓库设计>中英对照_第三章 第二部分 模型开发 数据仓库应该表示企业数据的各个方面,这些方面以主题域和业务数据模型开始.我们将在第3章使用一个假想的公司,指导一步一步地开发这两个 ...

  6. Lync Server 2010的部署系列_第三章 证书、架构、DNS规划

    Lync Server 2010的部署系列_第三章 证书.架构.DNS规划 一.证书规划 组件 使用者名称 使用者备用名称条目/顺序 证书颁发机构 (CA) 备注 边缘外部接口 Sip.Giantha ...

  7. 管理系统中计算机应用课件,管理系统中计算机应用_第三章课件.ppt

    <管理系统中计算机应用_第三章课件.ppt>由会员分享,提供在线免费全文阅读可下载,此文档格式为ppt,更多相关<管理系统中计算机应用_第三章课件.ppt>文档请在天天文库搜索 ...

  8. ArcGIS for Desktop入门教程_第三章_Desktop软件安装 - ArcGIS知乎-新一代ArcGIS问答社区...

    原文:ArcGIS for Desktop入门教程_第三章_Desktop软件安装 - ArcGIS知乎-新一代ArcGIS问答社区 1 软件安装 1.1 安装前准备 请确认已经收到来自Esri中国( ...

  9. 黑帽python第二版(Black Hat Python 2nd Edition)读书笔记 之 第三章 网络工程-原始套接字与嗅探(1)主机发现工具与包嗅探

    黑帽python第二版(Black Hat Python 2nd Edition)读书笔记 之 第三章 网络工程-原始套接字与嗅探(1)主机发现工具 文章目录 黑帽python第二版(Black Ha ...

最新文章

  1. WPF 与Surface 2.0 SDK 亲密接触–LibraryContainer 篇
  2. linux存储--共享内存机制mmap(十二)
  3. 在VMware运行Linux下,密码错误的原因
  4. 面向对象之三大特性:继承,封装,多态
  5. leetcode 654. 构造最大二叉树 思考分析
  6. WebPack配置文件抽离存放
  7. tween.js的使用
  8. 计算机485通讯原理,软件实现 - 基于Modbus协议的RS485总线通讯机设计原理及应用...
  9. MDT捕捉镜像提示错误
  10. 浅谈新一代PGIS技术在智慧消防中的创新应用
  11. 520来袭,程序猿的浪漫 - 前端情书
  12. [Zcu106开发]离线环境下用Vitis搭建Zcu106嵌入式系统神经网络加速器踩坑实录
  13. 手机水星路由器服务器无响应,水星路由器无线wifi连接成功但上不了网的解决方法...
  14. R语言进行数据分组聚合统计变换(Aggregating transforms)、计算dataframe数据的分组四分位距(IQR)
  15. JAVA8新特性的StreamAPI 遇到的问题stream has already been operated upon or closed
  16. 医学影像后处理服务器系统架构是,医学影像系统(PACS)
  17. 2019双十一大战:苏宁的“1小时场景生活圈”诱惑
  18. 2021年煤矿安全监测监控最新解析及煤矿安全监测监控考试试卷
  19. c语言设置单片机中断优先级,如何设置51单片机的中断优先级
  20. airpods pro是按压还是触摸_苹果三代耳机是触摸还是按键

热门文章

  1. 【华华给月月准备礼物——二分】
  2. Sass平台中使用免费地图实现大屏解决方案
  3. 纯CSS3实现柱状图的3D立体动画效果
  4. 室内精准定位市场大洗牌,蓝牙定位是否会成为主流?
  5. git push提交代码到服务器报remote: [session-xx] Access denie The requested URL returned error: 403
  6. opencv 简单美颜效果
  7. 几种企业应用集成方式的比较
  8. 电脑剪切音乐的软件哪个好
  9. 电商平台-深刻理解电商的库存架构与解决方案
  10. moviepy-用python编辑视频剪辑