python列表中remove()函数的使用方法详解

目录
  • 1. 基本使用
  • 2. 删除普通类型元素
  • 3. 删除对象类型元素
  • 4. 一次只删一个元素
  • 5、Python列表的remove方法的注意事项
  • 总结

1. 基本使用

remove() 函数可以删除列表中的指定元素

语法

list.remove( element )

参数

  • element:任意数据类型(数字、字符串、列表等)

2. 删除普通类型元素

删除一个列表中「存在」的数字或字符串

list1 = ['zhangsan', 'lisi', 1, 2]
list1.remove(1)  # 删除数字
print(list1)
list1.remove('zhangsan')  # 删除字符串
print(list1)

输出:

['zhangsan', 'lisi', 2]

['lisi', 2]

如果列表中「不存在」想要删除的元素,则会报错

list1 = [1, 2, 3]
list1.remove(4)

输出:

Traceback (most recent call last):

  File "E:/data/PrCharm/test1/55.py", line 2, in <module>

    list1.remove(4)

ValueError: list.remove(x): x not in list

# 值错误: 需要删除的值不在列表中

3. 删除对象类型元素

删除一个列表中「存在」的对象元素(列表、元祖等)

list1 = [1, 2, [3, 4], (5, 6)]
a = [3, 4]
b = (5, 6)
list1.remove(a)  # 删除列表类型
print(list1)
list1.remove(b)  # 删除元祖类型
print(list1)

输出:

[1, 2, (5, 6)]

[1, 2]

需要注意的是:remove删除对象类型的前提是,列表中的某个「元素」是对象类型,以下这种方式会报错

list1 = [1, 2, 3]
list1.remove([1,2])

输出:

Traceback (most recent call last):

  File "E:/data/PrCharm/test1/55.py", line 2, in <module>

    list1.remove([1,2])

ValueError: list.remove(x): x not in list

# 值错误: 需要删除的值不在列表中

4. 一次只删一个元素

        上面的案例中,列表 [1, 2] 看似在列表 [1, 2, 3] 中存在,实际上, remove() 函数判断元素是否在列表中存在的标准是:匹配列表中的「单个元素」,而不是整个列表。

         remove() 函数会遍历列表中的每一个元素,查看是否有元素与之匹配,匹配到相同的元素才会执行删除,这也就意味着 remove() 函数一次只能删除一个元素。

       自己删自己也不行,因为自己并不在自己的元素中

list1 = [1, 2, 3, 4, 5]
print('我自己在我自己里面吗?', list1 in list1)
list1.remove(list1)

输出:

Traceback (most recent call last):

  File "E:/data/PrCharm/test1/55.py", line 3, in <module>

    list1.remove(list1)

ValueError: list.remove(x): x not in list

我自己在我自己里面吗? False

5、Python列表的remove方法的注意事项

为何没有删除列表中的全部元素?

解释:

按照执行顺序,第一个空格被删除之后,后面的元素会前移(变成['空格','空格','12','23']),指针下一次会指向新列表的第二个元素(即初始状态的第三个空格),从而初始状态的第二个空格被跳过了,初始第三个空格被删除,接着后面的元素又再次前移(变成['空格','12','23']),指针指向新列表的第三个元素,即初始状态的第5个元素23,然后23被删除了,因此只剩下['空格','12']

如果想排除初始列表中的部分元素,如何实现?

由上面的情况知道,在遍历列表的同时对列表执行删除操作,会造成意外的结果,那么对初始列表进行遍历,对初始的列表的副本执行删除操作呢?

以上结果显示,没有得到预期效果。为什么?

问题出在copy=ls这一句,这里仅仅是使得copy与ls指向了同一片内存(即浅拷贝,shallow copy),并没有执行【开辟一片新内存,并且ls内存中的内容复制到新内存,然后使copy指向新开辟的内存,即深拷贝,deep copy】这一系列操作。因此对copy执行的remove操作,和对遍历ls列表,实质上还是都是针对同一片内存进行操作,因此结果上一个例子类似。

若想解决这一问题,有3个办法法:

(1)

ls=[' ',' ',' ','12','23','abc','aa']

copy=[' ',' ',' ','12','23','abc','aa']

这一办法对于已知列表的所有元素,且元素数量较少,结构较简单时可行,其他情况下不可行。

(2)引入copy模块的deepcopy方法:

(3)另外准备一个空列表,遍历初始列表时,将符合条件的元素逐一加入到空列表当中(利用列表的append方法)。

这种方法,思路上与remove方法相反,但执行的操作差不多,时间复杂度也与remove方法差不多,无需引入copy模块。

另外,对于列表的remove方法,python基础教程第二版给出的说明是:

remove方法用于移除列表中某个值的第一个匹配项:

>>>x=['to','be','or','not','to','be']

>>>x.remove('be')

>>>x

['to','or','not','to','be']

总结

到此这篇关于python列表中remove()函数使用的文章就介绍到这了,更多相关python列表remove()函数内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python列表list内建函数用法实例分析【insert、remove、index、pop等】

    本文实例讲述了Python列表list内建函数用法.分享给大家供大家参考,具体如下: #coding=utf8 ''''' 标准类型函数: cmp():进行序列比较的算法规则如下: ----------------------------------------------------------------------------- 1. 对两个列表的元素进行比较 2. 如果比较的元素是同类型的,则比较其值,返回结果 3. 如果两个元素的不是同一种类型,则检查它们是否是数字 a. 如果是数字,

  • 在Python的列表中利用remove()方法删除元素的教程

    remove()方法从列表中删除第一个obj. 语法 以下是remove()方法的语法: list.remove(obj) 参数 obj -- 这是可以从列表中移除该对象 返回值 此方法不返回任何值,但从列表中删除给定的对象 例子 下面的例子显示了remove()方法的使用 #!/usr/bin/python aList = [123, 'xyz', 'zara', 'abc', 'xyz']; aList.remove('xyz'); print "List : ", aList;

  • python3列表删除大量重复元素remove()方法的问题详解

    前言 删除列表中的元素十分简单,有很多方法.使用最多的是remove方法,remove() 方法从集合中删除指定的元素.此方法与discard()方法不同,因为如果指定的项目不存在,remove() 方法将引发错误,而discard()方法不会.但是今天刚发现一个问题,remove在删除列表中重复的元素时,有时会漏掉,只删除了部分重复元素. 下面举一个例子: 删除num1列表中的0元素,思路就是遍历列表,然后删除元素. 期望输出:nums1 = [1, 2, 3] 实际输出:nums1 = [1

  • python删除列表元素的三种方法(remove,pop,del)

    remove 删除单个元素,删除首个符合条件的元素,按值删除,返回值为空 List_remove = [1, 2, 2, 2, 3, 4] print(List_remove.remove(2)) print("after remove", List_remove) # None # after remove [1, 2, 2, 3, 4] -------------------------------------------------------------------------

  • Python列表元素删除和remove()方法详解

    删除列表中元素的方法有三种: 1. del命令 使用del命令能够删除列表中指定位置上的元素,也可以删除整个列表. 2. pop( )方法 使用列表的pop()方法能够删除并返回列表指定位置(默认为最后一个位置)的元素. 3. remove方法 使用列表的remove()方法能够删除列表中首次出现的指定元素,如果列表中不存在该元素则抛出异常.有的时候可能需要删除列表中某一大量重复的数据,我们很容易就会想到列表的remove()方法,例如: x=[1,2,1,2,1,2,1,2] y=[1,1,2

  • Python列表删除元素del、pop()和remove()的区别小结

    前言 在python列表的元素删除操作中, del, pop(), remove()很容易混淆, 下面对三个语句/方法作出解释 del语句 del语句可以删除任何位置处的列表元素, 若知道某元素在列表中的位置则可使用del语句. 例: >>> a = [3, 2, 2, 1] >>> del a[1] >>> a [3, 2, 1] pop()方法 pop()可删除任意位置的元素并将其返回, 只需在括号内指定要删除元素的索引即可, 当括号内为空时则删除

  • python列表中remove()函数的使用方法详解

    目录 1. 基本使用 2. 删除普通类型元素 3. 删除对象类型元素 4. 一次只删一个元素 5.Python列表的remove方法的注意事项 总结 1. 基本使用 remove() 函数可以删除列表中的指定元素 语法 list.remove( element ) 参数 element:任意数据类型(数字.字符串.列表等) 2. 删除普通类型元素 删除一个列表中「存在」的数字或字符串 list1 = ['zhangsan', 'lisi', 1, 2] list1.remove(1) # 删除数

  • Python pandas中apply函数简介以及用法详解

    目录 1.基本信息 2.语法结构 3.使用案例 3.1 DataFrame使用apply 3.2 Series使用apply 3.3 其他案例 4.总结 参考链接: 1.基本信息 ​ Pandas 的 apply() 方法是用来调用一个函数(Python method),让此函数对数据对象进行批量处理.Pandas 的很多对象都可以使用 apply() 来调用函数,如 Dataframe.Series.分组对象.各种时间序列等. 2.语法结构 ​ apply() 使用时,通常放入一个 lambd

  • 对python列表里的字典元素去重方法详解

    如下所示: def list_dict_duplicate_removal(): data_list = [{"a": "123", "b": "321"}, {"a": "123", "b": "321"}, {"b": "321", "a": "123"}] run

  • python列表中常见的一些排序方法

    目录 1.冒泡排序法 方法一:直接使用for循环 方法二:使用while语句 2.选择排序法 方法一:remove和append同时使用 方法二:pop和append同时使用 3.list.sort()方法 4.sorted()函数 总结 1.冒泡排序法 让列表中的一项和下一项作比较,若前一项大于后一项则交换两者位置(升序). 方法一:直接使用for循环 L=[8,2,50,3] for i in range(len(L)): for j in range(i+1,len(L)): if L[i

  • 对python函数签名的方法详解

    函数签名对象,表示调用函数的方式,即定义了函数的输入和输出. 在Python中,可以使用标准库inspect的一些方法或类,来操作或创建函数签名. 获取函数签名及参数 使用标准库的signature方法,获取函数签名对象:通过函数签名的parameters属性,获取函数参数. # 注意是小写的signature from inspect import signature def foo(value): return value # 获取函数签名 foo_sig = signature(foo)

  • Python实现从文件中加载数据的方法详解

    前几篇都是手动录入或随机函数产生的数据.实际有许多类型的文件,以及许多方法,用它们从文件中提取数据来图形化. 比如之前python基础(12)介绍打开文件的方式,可直接读取文件中的数据,扩大了我们的数据来源.下面,将展示几种方法. 我们将使用内置的 csv 模块加载CSV文件 CSV文件是一种特殊的文本文件,文件中的数据以逗号作为分隔符,很适合进行数据的解析.先用excle建立如下表格和数据,另存为csv格式文件,放到代码目录下. 包含在Python标准库中自带CSV 模块,我们只需要impor

  • 基于Python中求和函数sum的用法详解

    基于Python中求和函数sum的用法详解 今天在看<集体编程智慧>这本书的时候,看到一段Python代码,当时是百思不得其解,总觉得是书中排版出错了,后来去了解了一下sum的用法,看了一些Python大神写的代码后才发现是自己浅薄了!特在此记录一下.书中代码段摘录如下: from math import sqrt def sim_distance(prefs, person1, person2): # 得到shared_items的列表 si = {} for item in prefs[p

  • python中Django文件上传方法详解

    Django上传文件最简单最官方的方法 1.配置media路径 在settings.py中添加如下代码: MEDIA_ROOT = os.path.join(BASE_DIR, 'media') 2.定义数据表 import os from django.db import models from django.utils.timezone import now as timezone_now def upload_to(instance, filename):     now = timezo

  • Python快速从视频中提取视频帧的方法详解

    目录 1.抽取视频帧 2.多线程方法 3.整体代码 补充 Python快速提取视频帧(多线程) 今天介绍一种从视频中抽取视频帧的方法,由于单线程抽取视频帧速度较慢,因此这里我们增加了多线程的方法. 1.抽取视频帧 抽取视频帧主要使用了 Opencv 模块. 其中: camera = cv2.Videocapture( ) ,函数主要是通过调用笔记本内置摄像头读取视频帧: res, image = camera.read( ) 函数主要是按帧读取视频,返回值 “res” 是布尔型,成功读取返回 T

  • Python 在 VSCode 中使用 IPython Kernel 的方法详解

    本文介绍,在 VSCode 使用 IPython Kernel的设置方法,详细介绍如下所示: 要达到的效果: 只需按下 Ctrl+:,选中的几行代码,就会自动发送到 IPython Kernel,并运行,得到结果!当然,快捷键也可以另行设置! 为什么要这么做: 首先,这种配置方式,比较轻量快速: 主要用于,增加写代码时的"互动性",可以边写代码,边测试:例如,在写代码时候,快速测试下,一行或几行代码,看看效果: 所以,非常适合新手,边写边学习,或者,需要写个几十行代码,迅速解决问题,的

随机推荐