第13讲:Python列表对象中元素的删操作

news2024/11/25 0:47:41

文章目录

    • 1.列表元素删操作的方法
    • 2.调用remove方法一次删除一个指定的元素
    • 3.调用pop方法一次只删除一个指定索引的元素
      • 3.1.使用pop方法删除列表中索引为2的元素
      • 3.2.使用pop方法不指定索引
      • 3.3.使用pop方法指定的索引不存在时同样也会抛出错误
    • 4.使用del语句一次至少删除一个元素
      • 4.1.使用del语句根据指定的索引一次删除一个元素
      • 4.2.使用del语句根据指定的切片一次删除多个元素
      • 4.3.使用del语句清空列表的所有元素
      • 4.4.使用slice方法实现
    • 5.使用切片赋值空的方式删除列表中的元素
      • 5.1.使用切片赋值为空列表删除列表中的一个元素
      • 5.2.使用切片赋值为空列表删除列表中的多个元素
      • 5.3.使用切片赋值为空列表清空整个列表
    • 6.使用clear方法清空列表所有元素

1.列表元素删操作的方法

列表的删操作指的是在列表中删除已存在的元素,列表中的元素被删除后,后面所有的元素依次往前移动一位,挂在被删除元素的索引下,保证每一个索引都有元素,如下图所示。

image-20220730161200396

删除列表中的元素,常见的有五种方式:

  • 调用remove方法一次删除一个指定的元素。

    • 该方法是根据指定的元素去删除的,一次只能删除一个元素,被删除元素后面的所有元素依次前移一个位置。
    语法格式:
    列表名.remove(元素)
    
  • 调用pop方法一次只删除一个指定索引的元素。

    • 该方法可以根据指定的索引,找到对应的元素,然后将其删除,一次只能删除一个元素,使用该方法还可以返回被删除的元素。
    语法格式:
    列表名.pop(索引)
    
  • 使用del语句一次至少删除一个元素。

    • 使用该方法一次可以删除至少一个元素,也是根据指定的索引去删除元素的,同时删除多个元素时,指定的索引范围是以切片的形式,一次性删除多个元素时,也相当于采用的切片。
    语法格式:
    del 列表名[索引]
    del 列表名[起始索引:结束索引]
    
  • 使用切片获取一个范围的索引,将范围内索引对应的元素设置成空列表。

    • 使用该方法可以将获取的切片列表,设置为空列表,也相当于是删除了。
    列表名[起始索引:结束索引] = []
    
  • 使用clear方法清空列表

    • 清空整个列表的内容。
    列表名.clear()
    

2.调用remove方法一次删除一个指定的元素

1)使用remove方法删除列表中的jiangxl元素

mylist = ["jiangxl", "linux", "k8s", "linux", "devops", 789, 987]
print(mylist)
#输出结果:['jiangxl', 'linux', 'k8s', 'linux', 'devops', 789, 987]
'''
    删除列表中jiangxl这个元素,此时后面的元素依次向前移动一个位置
'''
mylist.remove("jiangxl")
print(mylist)

#输出结果:['linux', 'k8s', 'linux', 'devops', 789, 987]

image-20220730162401689

2)当列表中有重复的元素时,会删除列表中最靠前的元素

mylist = ["jiangxl", "linux", "k8s", "linux", "devops", 789, 987]
'''
列表中有两个元素linux,第一个linux的索引是1,第二个linux的索引是3,当删除的元素在列表中存在重复值,会删除最靠前的元素,索引为1的linux将被删除,然后此元素后面的所有元素的依次向前移动一个位置
'''
mylist.remove("linux")
print(mylist)

#输出结果:['jiangxl', 'k8s', 'linux', 'devops', 789, 987]

3)当删除的元素在列表中不存在时会抛出错误

aaa元素在列表中不存在,当删除aaa会抛出错误。

mylist.remove("aaaa")

#抛出错误:ValueError: list.remove(x): x not in list

image-20220730162937195

3.调用pop方法一次只删除一个指定索引的元素

该方法可以根据指定的索引,找到对应的元素,然后将其删除,一次只能删除一个元素,使用该方法还可以返回被删除的元素。

由于pop方法删除了元素后,可以输出被删除的元素是什么,如下所示。

#删除mylist列表中索引为3的元素,并打印被删除的元素是什么
print(mylist.pop(3))

image-20220730163519672

我们也可以美化一下输出。

3.1.使用pop方法删除列表中索引为2的元素

mylist = ["jiangxl", "linux", "k8s", "linux", "devops", 789, 987]
'''
    按照惯例我们都是这么书写代码的,但是pop方法可以返回被删除的元素,因此为了练习代码的编写,可以适当使用print美化其输出
    #print(mylist.pop(3))
    #print(mylist)
    
    在print函数中,如果我们要写多个字符串,那么就以逗号进行分隔,想要换行输出,就使用\n
'''
print("使用pop方法删除指定索引的元素为:", mylist.pop(4), "\n删除元素后当前的列表内容为:", mylist)

'''
输出内容为:
使用pop方法删除指定索引的元素为: devops 
删除元素后当前的列表内容为: ['jiangxl', 'linux', 'k8s', 'linux', 789, 987]
'''

image-20220730164019008

3.2.使用pop方法不指定索引

使用pop方法不指定索引,默认会删除列表中的最后一个元素。

mylist = ["jiangxl", "linux", "k8s", "linux", "devops", 789, 987]
print("使用pop方法删除指定索引的元素为:", mylist.pop(), "\n删除元素后当前的列表内容为:", mylist)

'''
使用pop方法删除指定索引的元素为: 987 
删除元素后当前的列表内容为: ['jiangxl', 'linux', 'k8s', 'linux', 'devops', 789]
'''

image-20220730164129357

3.3.使用pop方法指定的索引不存在时同样也会抛出错误

print("使用pop方法删除指定索引的元素为:", mylist.pop(100), "\n删除元素后当前的列表内容为:", mylist)

IndexError: pop index out of range

image-20220730164207423

4.使用del语句一次至少删除一个元素

使用该方法一次可以删除至少一个元素,也是根据指定的索引去删除元素的,同时删除多个元素时,指定的索引范围是以切片的形式,一次性删除多个元素时相当于采用的切片形式。

4.1.使用del语句根据指定的索引一次删除一个元素

删除索引为2的元素,索引为2的元素是k8s,k8s元素会被删除。

mylist = ["jiangxl", "linux", "k8s", "devops", 789, 987]
del mylist[2]
print(mylist)

#输出结果:['jiangxl', 'linux', 'devops', 789, 987]

image-20220730164845466

4.2.使用del语句根据指定的切片一次删除多个元素

删除索引1到索引4范围内对应的元素。

分析:切片的索引范围是1~4,4是结束索引不纳入切片列表,此时1、2、3这三索引对应的元素linux、k8s、devops都会被删除。

mylist = ["jiangxl", "linux", "k8s", "devops", 789, 987]
del mylist[1:4]
print(mylist)

#输出结果:['jiangxl', 789, 987]

image-20220730164858854

4.3.使用del语句清空列表的所有元素

使用del语句清空列表的所有元素使用下面的代码。

del mylist[:]
print(mylist)

#输出:[]

4.4.使用slice方法实现

只要是切片操作,都可以使用slice方法实现。

需求:删除索引1~5范围内对应的元素,且步长为2。

分析:切片范围1~5,5是结束索引不纳入切片范围,步长为2,间隔就是1,最终1、3两个索引对应的元素linux、devops会被删除。

mylist = ["jiangxl", "linux", "k8s", "devops", 789, 987]
del mylist[slice(1,5,2)]
print(mylist)

#输出:['jiangxl', 'k8s', 789, 987]

5.使用切片赋值空的方式删除列表中的元素

使用切片获取1个或多个索引对应的元素,然后将其赋值为空,形成一个切片空列表,也相当于将列表中的元素删除了。

5.1.使用切片赋值为空列表删除列表中的一个元素

删除索引为2的元素。

mylist = ["jiangxl", "linux", "k8s", "devops", 789, 987]
mylist[2:3] = []
'''
    切片范围2:3,3作为结束索引不纳入切片范围,只有索引为2的元素会被处理,这里设置为空,相当于删除,后面的所有元素依次向前移动一个位置
'''
print(mylist)

#输出:['jiangxl', 'linux', 'devops', 789, 987]

image-20220730165835250

5.2.使用切片赋值为空列表删除列表中的多个元素

删除索引1到索引4范围内对应的元素。

分析:切片的索引范围是1~4,4是结束索引不纳入切片列表,此时1、2、3这三索引对应的元素linux、k8s、devops会被设置为空。

mylist = ["jiangxl", "linux", "k8s", "devops", 789, 987]
mylist[1:4] = []
print(mylist)

#输出:['jiangxl', 789, 987]

5.3.使用切片赋值为空列表清空整个列表

mylist[:] = []
print(mylist)

#输出:[]

6.使用clear方法清空列表所有元素

mylist = ["jiangxl", "linux", "k8s", "devops", 789, 987]
mylist.clear()
print(mylist)

#输出:[]

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

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

相关文章

nodejs+vue082新生入学管理系统-vscode msyql

一章 绪论 3 1.1课题背景 3 1.2课题研究的目的和意义 3 1.3 研究现状 4 1.4论文所做的主要工作 4 第二章 技术介绍 5 2.1 B/S结构 5 2.2MySQL介绍 5 2.3MySQL环境配置 6 第三章 系统分析与设计 8 3.1系统说明 8 3.2系统可行性分析 8 3.2.1 技术可行性 8 3.2.2 经济可行性 8 3…

Vue3——路由和嵌套路由的使用

路由的作用 用来在前端的页面实现页面的切换,比如下图中acwing的页面应该就是采用了路由来设计导航栏,在每一次点击不同选项时只有网址后面的索引发生变化,网页并没有刷新 路由的使用方法: 根据导航栏处的跳转的页面的不同&…

如何创建vue项目

一. 环境准备 1.安装node.js 推荐地址:Node.js 2.检查是否安装完成:输出版本号说明安装成功 二.搭建vue环境 1.全局安装vue/cli 推荐地址:快速上手 | Vue.js 2.在命令输入 npm install -g vue/cli 如果使用yarn global add vue/cli 需要…

JVM--基础--19.7--垃圾收集器--G1

​ JVM–基础–19.7–垃圾收集器–G1 1、结构图 ​ 2、G1收集器(面向服务端) 2.1、特点 2.1.1、并行于并发 使用多个CPU(CPU或者CPU核心)来缩短stop-The-World停顿时间,其他需要停顿Java线程执行的GC动作,G1收集器仍然可以通过并发的方式让java程序…

​汽车芯片的可靠性设计:控制亚稳态,提升稳定性

【作者简介】Dr. Roy 复睿微 IC后端工程师,南开大学与韩国首尔国立大学联合培养博士。博士期间发表高水平学术期刊论文多篇,其中一作一区封面文章2篇;授权发明专利5项。同时,在先进工艺大芯片的静态时序分析、芯片设计流程提效优化…

对某擦边站点的一次渗透

更新时间:2022.07.05 2022年11月21日21:50:12 1. 说明 在上半年的时候,在线浏览网页的时候,突然跳转到了一个sese的界面,然后要下载app,本着弹出即下载的原则,我就欣然安装了: app本身长这样…

Dubbo架构设计与源码解析(一) 架构设计

作者:黄金 一、架构演变 单应用架构 ----> 垂直架构 ----> 分布式架构 ----> 微服务架构 ----> 云原生架构 二、Dubbo总体架构 1、角色职能 • Container:服务容器 (tomcat、jetty、weblogic) • Provider&#xf…

Web Spider NEX XX国际货币经纪 - PDF下载 提取关键词(二)

Web Spider NEX XX国际货币经纪 - PDF下载 & 解析 首先声明: 此次案例只为学习交流使用,切勿用于其他非法用途 文章目录Web Spider NEX XX国际货币经纪 - PDF下载 & 解析前言一、任务说明1.PDF下载2.PDF解析提取关键词数据二、Pip模块安装三、网站分析四、核…

【解决】Unity Player Log 自生成造成磁盘满占用率问题

开发平台:Unity 2020 编程平台:Visual Studio 2022 编程语言:CSharp   问题描述 Unity 工程完成打包与发布过程后,在运行时生成大量 Player Log 的日志文件导致其所在盘占用率满额问题。通常情况下,这类日志文件信息…

微信小程序开发—入门到跑路(三)

3、微信小程序第三天 1、学习目标 知识点名称知识点内容难度系数要求程度页面导航声明式导航、编程式导航、导航传参3星掌握页面事件下拉刷新、上拉触底、上拉触底案例、自定义编译模式3星掌握生命周期生命周期分类、应用生命周期、页面生命周期3星掌握wxs学习认识wxs及应用场…

百度工程师带你探秘C++内存管理(ptmalloc篇)

作者 | daydreamer 前篇《探秘C内存管理(理论篇)》主要介绍了Linux C程序内存管理的理论基础,本文作为系列文章《探秘C内存管理》的第二篇,将会探讨经典内存管理器ptmalloc如何管理C程序的内存。借助剖析ptmalloc解决问题的着重点…

攻防世界-easyphp

题目 访问url进入靶场&#xff0c;阅读php代码 <?php highlight_file(__FILE__); $key1 0;//值赋值 $key2 0;$a $_GET[a];//get方法获取值 $b $_GET[b];if(isset($a) && intval($a) > 6000000 && strlen($a) < 3){ //a的值需要大于 6000000&…

Python:如何使用正则表达式快速处理字符串

文章目录前言一、正则表达式1、元字符详解2、等价方法&#xff08;速记&#xff09;二、常用的表达式1、常用的正则表达式2、先行断言和后行断言三、Python匹配函数1、Match函数2、Search函数3、Findall函数四、regex101网站推荐前言 1、正则表达式是对字符串操作的一种逻辑公…

Android Studio使用Mob实现短信验证功能遇到的问题解决

一、Mob短信验证 全球领先的数据智能科技平台-MobTech袤博解决 进行注册登入 登入成功后&#xff0c;点击开发者服务中的短信验证&#xff0c;进入开发者平台 填好信息创建成功后显示下图&#xff0c;可以看到对应信息如下&#xff08;注意记住AppKey和AppSecretKey&#xff…

怎样让Odoo 16自动根据销售订单创建采购订单或生产订单

我们在销售产品时通常只处理销售过程&#xff0c;但是&#xff0c;在根据消费者的要求交付给消费者之前&#xff0c;产品会必须有库存。这时候&#xff0c;货物要么从车间「生产」&#xff0c;要么从供应商「采购」。当销售订单确认但商品缺货时&#xff0c;我们偶尔不得不先获…

vite.config.ts--服务器、简化导入写法、element-plues按需导入的配置

vite.config.ts--服务器、简化导入写法、element-plues按需导入的配置说明一、服务器server二、简化导入写法三、element-plus按需导入完说明 本教程适用于vite创建的前端项目服务器server简化导入写法element-plus按需导入 一、服务器server import { defineConfig } from …

MFC界面控件BCGControlBar v33.3 - 编辑控件功能升级

BCGControlBar库拥有500多个经过全面设计、测试和充分记录的MFC扩展类。 我们的组件可以轻松地集成到您的应用程序中&#xff0c;并为您节省数百个开发和调试时间。 BCGControlBar专业版和BCGSuite for MFC v33.3已正式发布了&#xff0c;该版本包含了增强的Ribbon自定义、新的…

[附源码]计算机毕业设计Python点餐系统(程序+源码+LW文档)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等…

智能座舱进入多元化交互时代,本土芯片厂商如何领跑?

“智能座舱市场正在进入一个全新的发展阶段。”芯驰科技资深产品市场总监金辉在2022高工智能汽车年会上表示&#xff0c;智能座舱已经进入了多屏互动、多模交互、多人交互等多元化交互时代。 芯驰科技资深产品市场总监金辉 作为未来的“第三生活空间”以及主机厂差异化竞争的焦…

【问答篇】Java 线程篇 面试题(一)

每天进步一点~ (ps: 文章内容及图片出处来自本人公众号~) 01、问&#xff1a;请谈谈你对并发编程优缺点的认识与理解 ~ 答&#xff1a; 优点&#xff1a;充分利用多核CPU的计算能力&#xff0c;通过并发编程的形式将多核CPU的计算能力发挥到极致&#xff0c;性能得到提升。 …