添加、修改和删除列表元素

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm=1001.2014.3001.5501

添加、修改和删除列表元素也称为更新列表。在实际开发时,经常需要对列表进行更新。下面我们介绍如何实现列表元素的添加、修改和删除。

(1)添加元素

在4.1节介绍了可以通过“+”号将两个序列连接,通过该方法也可以实现为列表添加元素。但是这种方法的执行速度要比直接使用列表对象的append()方法慢,所以建议在实现添加元素时,使用列表对象的append()方法实现。列表对象的append()方法用于在列表的末尾追加元素,语法格式如下:

listname.append(obj)

其中,listname为要添加元素的列表名称,obj为要添加到列表末尾的对象。

例如,定义一个包括4个元素的列表,然后应用append()方法向该列表的末尾添加一个元素,可以使用下面的代码:

phone = ["摩托罗拉","诺基亚","三星","OPPO"]

len(phone)            # 获取列表的长度

phone.append("iPhone")

len(phone)            # 获取列表的长度

print(phone)

上面的代码在IDLE中的Shell窗口中逐行执行的过程如图9所示。

图9  向列表中添加元素

多学两招:列表对象除了提供append()方法可以向列表中添加元素,还提供了insert()方法也可以向列表中添加元素。该方法用于向列表的指定位置插入元素。但是由于该方法的执行效率没有append()方法高,所以不推荐这种方法。

上面介绍的是向列表中添加一个元素,如果想要将一个列表中的全部元素添加到另一个列表中,可以使用列表对象的extend()方法实现。extend()方法的语法如下:

listname.extend(seq)

其中,listname为原列表,seq为要添加的列表。语句执行后,seq的内容将追加到listname的后面。

下面通过一个具体的实例演示将一个列表添加到另一个列表中。

场景模拟:NBA名人堂差不多每年都有新增加的球星。2018年又新增了三位,现编程实现将他们添加到NBA名人堂列表中。

  实例03  向NBA名人堂列表中追加2018年新进入的球星

在IDLE中创建一个名称为nba.py的文件,然后在该文件中定义一个保存NBA名人堂原有球星名字的列表,然后创建一个保存2018年新进入球星名字的列表,再调用列表对象的extend()方法追加元素,最后输出追加元素后的列表,代码如下:

# NBA名人堂原有人员

oldlist = ["迈克尔・乔丹","卡里姆・阿布杜尔・贾巴尔","哈基姆・奥拉朱旺","查尔斯・巴克利","姚明"]

newlist = ["贾森・基德","史蒂夫・纳什","格兰特・希尔"]      # 新增人员列表

oldlist.extend(newlist)                                # 追加新球星

print(oldlist)                                       # 显示新的NBA名人堂人员列表

运行结果如图10所示。

图10  向NBA名人堂列表中追加2018年新进入的球星

(2)修改元素

修改列表中的元素只需要通过索引获取该元素,然后再为其重新赋值即可。例如,定义一个保存3个元素的列表,然后修改索引值为2的元素,代码如下:

verse = ["长亭外","古道边","芳草碧连天"]

print(verse)

verse[2] = "一行白鹭上青天"                    # 修改列表的第3个元素

print(verse)

上面的代码在IDLE中的执行过程如图11所示。

图11  修改列表的指定元素

(3)删除元素

删除元素主要有两种情况,一种是根据索引删除,另一种是根据元素值进行删除。

l  根据索引删除

删除列表中的指定元素和删除列表类似,也可以使用del语句实现。所不同的就是在指定列表名称时,换为列表元素。例如,定义一个保存3个元素的列表,删除最后一个元素,可以使用下面的代码:

verse = ["长亭外","古道边","芳草碧连天"]

del verse[-1]

print(verse)

上面的代码在IDLE中的执行过程如图12所示。

图12  删除列表的指定元素

l  根据元素值删除

如果想要删除一个不确定其位置的元素(即根据元素值删除),可以使用列表对象的remove()方法实现。例如,要删除列表中内容为“公牛”的元素,可以使用下面的代码:

team = ["火箭","勇士","开拓者","爵士","鹈鹕","马刺","雷霆","森林狼"]

team.remove("公牛")

使用列表对象的remove()方法删除元素时,如果指定的元素不存在,将出现如图13所示的异常信息。

图13  删除不存在的元素时出现的异常信息

所以在使用remove()方法删除元素前,最好先判断该元素是否存在,改进后的代码如下:

team = ["火箭","勇士","开拓者","爵士","鹈鹕","马刺","雷霆","森林狼"]

value = "公牛"                # 指定要移除的元素

if team.count(value)>0:      # 判断要删除的元素是否存在

    team.remove(value)        # 移除指定的元素

print(team)

说明:列表对象的count()方法用于判断指定元素出现的次数,返回结果为0时,表示不存在该元素。

执行上面的代码后,将显示下面的列表原有内容:

['火箭', '勇士', '开拓者', '爵士', '鹈鹕', '马刺', '雷霆', '森林狼']

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vs无法打开或包括文件”QTxxx“

vs创建项目时默认引入core、gui、和widgets等模块,在需要网络通讯或者图表等开发时需要添加相应模块。 点击扩展 -> QT VS Tools -> QT Project Setting->Qt Modules,添加相应模块即可

【Jenkins】Centos7安装Jenkins(环境:JDK11,tomcat9,maven3.8)

目录 Jenkins部署环境Maven安装1.上传安装包2.解压3.配置Maven环境变量4.使配置文件立即生效5.校验Maven安装6.Maven配置阿里云仓库7.Maven配置依赖下载位置 Git安装安装监测安装 JDK17安装1.查看旧版本JDK2.卸载旧版本JDK3.查看是否卸载干净4.创建java目录5.下载JDK11安装包6.…

kettle从入门到精通 第六十二课 ETL之kettle job中发送邮件(带多个附件),闭坑指南

1、今天群里一个朋友加我微信遇到问下向我求助。一顿测试下来发现原来是使用kettle姿势不对,对kettle没有完全驾驭导致的,今天和大家一起分享下这个问题。 2、先自我膨胀下,自从写kettle系列文章之后认识了很多朋友,同时文章也帮助…

设计模式6——单例模式

写文章的初心主要是用来帮助自己快速的回忆这个模式该怎么用,主要是下面的UML图可以起到大作用,在你学习过一遍以后可能会遗忘,忘记了不要紧,只要看一眼UML图就能想起来了。同时也请大家多多指教。 单例模式(Singleto…

1-4月我国5G用户、流量占比均过半,呈现平稳增长态势!

1-4月份,通信行业整体运行平稳。电信业务量收平稳增长;5G、千兆光网等新型基础设施建设持续推进,网络连接用户规模不断扩大,移动互联网接入流量较快增长。 一、总体运行情况 电信业务收入稳步增长,电信业务总量增速保持…

vue3.0(十)双向数据绑定原理和v2.0对比

文章目录 MVVM框架1 理解ViewModel2 MVVM的优点 vue2.0 双向数据绑定原理1 实现双向数据绑定2 实现3 Vue2.0 缺点和解决办法 vue3.0 双向数据绑定原理vue2.0和vue3.0 的差异Vue2.0Vue3.0Object.defineProperty和Proxy的对比 MVVM框架 MVVM(Model-View-ViewModel&am…

Kubectl 的使用——k8s陈述式资源管理

一、kebuctl简介: kubectl 是官方的CLI命令行工具,用于与 apiserver 进行通信,将用户在命令行输入的命令,组织并转化为 apiserver 能识别的信息,进而实现管理 k8s 各种资源的一种有效途径。 对资源的增、删、查操作比较方便&…

欢聚笔试题求助帖

事情是这样的,这段时间一直在求职投简历,期望在暑假之前接到一份大数据开发的实习工作。投了很多公司,然后就收到了欢聚的笔试邀约,HR说要我一天之内做出来,恰巧第二天还有组会要汇报,我就先放下了&#xf…

21.1zabbix低级自动发现-监控项详解

详解分析:低级自动发现:自动创建监控项(红色部分字体是怎么创建得监控项?) 点击对应得主机-监控项-Network interfaces应用集,键值有进4个,出4个。因为本机存在4块网卡 注释:本机存…

BGP(一)边界网关协议

BGP协议基础 路由分类 直连路由 非直连路由(间接路由) 静态路由动态路由 IGP:内网网关路由协议(在企业内部或数据中心内部使用) DV:距离矢量路由协议RIP(v1/v2)IGRP——网络直径&…

文本转语音软件-TTSMaker

一、TTSMaker介绍 TTSMaker(马克配音)是一款免费的文本转语音工具,提供语音合成服务,支持多种语言,包括中文、英语、日语、韩语、法语、德语、西班牙语、阿拉伯语等50多种语言,以及超过300种语音风格。 可…

Leetcode刷题笔记2:数组基础2

导语 leetcode刷题笔记记录,本篇博客记录数组基础1部分的题目,主要题目包括: 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II 知识点 滑动窗口 所谓滑动窗口,就是不断的调节子序列的起始位…

(二)vForm 动态表单设计器之下拉、选择

系列文章目录 (一)vForm 动态表单设计器之使用 目录 系列文章目录 前言 一、后端需提供接口 二、组件配置 总结 前言 动态表单下拉、选择等组件,大概率要使用数据库中的数据,那么vForm如何拿到数据库中的数据呢?跟随…

Xed编辑器开发第二期:使用Rust从0到1写一个文本编辑器

第三篇 这部分接着处理用户退出命令以及一些其他新功能; 3.1 使用CtrlQ退出 modifiers: event::KeyModifiers::CONTROL,使用CONTROL替换之前的NONE值即可; 3.2 重构键盘输入 让我们重构我们的代码,以便我们有一个用于低级按键读取的函数&…

php部分特性漏洞学习

php部分函数漏洞学习 简单总结一些我遇到的ctf中的php的一些函数或特性的漏洞,我刷题还是太少了,所以很多例子来自ctfshow,以后遇到相关赛题再更新 1.MD5和其他hash 弱类型比较 php中,有两中判断相等的符号,和&…

flutter使用dbus插件时,在终端无法使用“dart-dbus”命令

不用flutter的人,可能都不会找到这儿,遇到这个问题,所以这里默认flutter已经装过了,且对flutter如何使用插件也有所了解了。 由于我在项目中用到了dbus插件,用法如图所示,我需要使用这条命令来生成一个sou…

前端javascript包管理,npm升级用pnpm

一 pnpm 介绍 pnpm(Package Manager)是一个快速、节省磁盘空间的 JavaScript 包管理器,它是 Node.js 生态系统中 npm 的一个替代品。pnpm 解决了传统包管理工具在处理依赖时的一些痛点,特别是关于存储空间使用和依赖地狱的问题。…

vite vue-cli 之vue3安装Vue devtools调试工具

一.vite的官方配置-vite-plugin-vue-devtools vite.config.js import { fileURLToPath, URL } from node:urlimport vue from vitejs/plugin-vue import vueJsx from vitejs/plugin-vue-jsx import { defineConfig } from vite import VueDevTools from vite-plugin-vue-devt…

Android JetPack ViewModel

一、什么是ViewModel? Android ViewModel在我们使用MVVM开发模式时会经常用到,对我来说就是好用,好维护。 它相对于MVC模式, 一来可以减少Activity层的代码,可以把一些业务逻辑和对数据的交互到ViewModel层去&#…

Excel模板计算得出表格看板

背景 表格看板及导出,单元格时间年是根据筛选器时间变化的 较往年和往年是计算单元格 思路 1.通过excel模板来把数据填入excel再数据清洗得到数据返回前端 2.数据填充,通过行列作为key 列如:key整体20241月,根据key匹配数据填…