谈谈Python中pop与remove的用法

remove() 函数用于移除列表中某个值的第一个匹配项。

remove()方法语法:  list.remove(obj)

如果obj不在列表中会引发 ValueError 错误,通常先使用count方法查看有多少个obj

pop() 函数用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值。

pop()方法语法:  list.pop(obj=list[-1])

接下来发现网上的另一篇文章貌似说的不是很合理

https://www.jb51.net/article/132501.htm

a_list = [‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘]
b_list = [‘b‘, ‘c‘]
for i in a_list:
    if i in b_list:
        a_list.remove(i)
print(a_list)
# 输出 [‘a‘, ‘c‘, ‘d‘, ‘e‘]

a_list = [‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘]
b_list = [‘b‘, ‘c‘]
for i in a_list:
    if i in b_list:
        idl = a_list.index(i)
        a_list.pop(idl)
print(a_list)
# 输出 [‘a‘, ‘c‘, ‘d‘, ‘e‘]

为什么元素‘c’未被删除呢?那篇文章说x已经不是原来的x,好吧先看看以下的代码吧

x = [‘a‘, ‘b‘, ‘c‘, ‘d‘]
print(id(x))
x.remove(‘b‘)
print(x)
print(id(x))
# 2071261855944
# [‘a‘, ‘c‘, ‘d‘]
# 2071261855944

y = [‘a‘, ‘b‘, ‘c‘, ‘d‘]
print(id(y))
y.pop(2)
print(y)
print(id(y))
# 2071261858056
# [1, 2, 4]
# 2071261858056

这很明显经过remove与pop删除元素之后,地址并没有改变,所以应该不是重新赋值。

针对使用for循环删除元素来谈一谈个人看法,为了方便表达,直接解释代码,如下

a_list = [‘a‘, ‘b‘, ‘c‘, ‘c‘, ‘d‘, ‘e‘]
# 在元素‘c’后面又增加一个‘c’

b_list = [‘b‘, ‘c‘]
for i in a_list:
    if i in b_list:
        a_list.remove(i)
print(a_list)
# 依然输出 [‘a‘, ‘c‘, ‘d‘, ‘e‘] ,这说明
# 当remove删除‘b’元素时第一个‘c’移动到‘b’的位置
# 第二遍循环遍历时for循环是从上一次循环的下个索引位置开始的
# 此时就删除了第二个‘c’,第一个“逃过一劫”

a_list = [‘a‘, ‘b‘, ‘c‘, ‘c‘, ‘d‘, ‘e‘]
# 在元素‘c’后面又增加一个‘c’

b_list = [‘b‘, ‘c‘]
for i in a_list:
    if i in b_list:
        idl = a_list.index(i)
        a_list.pop(idl)
print(a_list)
# 同样输出 [‘a‘, ‘c‘, ‘d‘, ‘e‘]
# 原理同remove相同

 

原文地址:https://www.cnblogs.com/yang901112/p/11312292.html

时间: 2024-11-07 22:44:57

谈谈Python中pop与remove的用法的相关文章

python中pop()函数的用法

python中pop()函数的用法 pop() 函数用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值. 语法:list.pop(obj=list[-1]) //默认为 index=-1,删除最后一个列表值. obj -- 可选参数,要移除列表元素的对象. 该方法返回从列表中移除的元素对象. sentence=['All', 'good', 'things', 'come', 'to' ,'those', 'who', 'wait.'] print("默认为 index=-1,删除

谈谈python 中__name__ = '__main__' 的作用

position:static(静态定位) 当position属性定义为static时,可以将元素定义为静态位置,所谓静态位置就是各个元素在HTML文档流中应有的位置 podisition定位问题.所以当没有定义position属性时,并不说明该元素没有自己的位置,它会遵循默认显示为静态位置,在静态定位状态下无法通过坐标值(top,left,right,bottom)来改变它的位置. position:absolute(绝对定位) 当position属性定义为absolute时,元素会脱离文档流

谈谈python中的遍历

谈谈python中的遍历python中也有像java中的for...each....在python中是for...in... 其实感觉差不多,不过python的规则更灵活一点,只要是可以进行迭代的对象都能使用for...in....那么问题来了,什么是可迭代的对象呢?可以使用collections模块的Iterable来判断. from collections import Iterable flag = isinstance('adc',Iterable) print(flag) flag =

python中enumerate()函数用法

python中enumerate()函数用法 先出一个题目:1.有一 list= [1, 2, 3, 4, 5, 6]  请打印输出:0, 1 1, 2 2, 3 3, 4 4, 5 5, 6 打印输出, 2.将 list 倒序成 [6, 5, 4, 3, 2, 1] 3.将a 中的偶数挑出 *2 ,结果为 [4, 8, 12] 这个例子用到了python中enumerate的用法.顺便说一下enumerate在for循环中得到计数的用法,enumerate参数为可遍历的变量,如 字符串,列表等

Python中logging模块的基本用法

在 PyCon 2018 上,Mario Corchero 介绍了在开发过程中如何更方便轻松地记录日志的流程. 整个演讲的内容包括: 为什么日志记录非常重要 日志记录的流程是怎样的 怎样来进行日志记录 怎样进行日志记录相关配置 日志记录使用常见误区 下面我们来梳理一下整个演讲的过程,其实其核心就是介绍了 logging 模块的使用方法和一些配置. 日志记录的重要性 在开发过程中,如果程序运行出现了问题,我们是可以使用我们自己的 Debug 工具来检测到到底是哪一步出现了问题,如果出现了问题的话,

Python中POP()的区别

Python中列表,字典和Set都有pop函数,但参数略有区别如下:以下参数基于Python 3.4.1 1. List 1 >>> help(list.pop) 2 Help on method_descriptor: 3 4 pop(...) 5 L.pop([index]) -> item -- remove and return item at index (default last). 6 Raises IndexError if list is empty or ind

慎用python的pop和remove方法

申明:转载请注明出处!!! Python关于删除list中的某个元素,一般有两种方法,pop()和remove(). 如果删除单个元素,使用基本没有什么问题,具体如下. 1.pop()方法,传递的是待删除元素的index: x = ['a', 'b', 'c', 'd'] x.pop(2) print x ------------------ result: ['a', 'b', 'd'] 2. remove()传递待删除元素,如果多个元素一样,默认删除第一个: x = ['a', 'b', '

python 中os 模块的基本用法

小编今天带领大家领略下python中file文件的基本操作.现学先买哦: 导入模块:import os 首先我们介绍下常用的几个方法: 设置当前工作目录: os.chdir('/tmp') #设置当前目录为tmp目录 创建文件夹 : os.mkdir('exceple') 显示当前工作目录下的文件列表: os.listdir(os.getcwd())  #os.getcwd() 获取当前工作目录 os.rmdir('exceple') #删除制定文件夹 必须为空 os.remove('sd.tx

python中enumerate()的用法

先出一个题目:1.有一 list= [1, 2, 3, 4, 5, 6]  请打印输出:0, 1 1, 2 2, 3 3, 4 4, 5 5, 6 打印输出, 2.将 list 倒序成 [6, 5, 4, 3, 2, 1] 3.将a 中的偶数挑出 *2 ,结果为 [4, 8, 12] 这个例子用到了python中enumerate的用法.顺便说一下enumerate在for循环中得到计数的用法,enumerate参数为可遍历的变量,如 字符串,列表等: 返回值为enumerate类. 示例代码如