广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python遍历列表时删除元素案例
  • 718
分享到

Python遍历列表时删除元素案例

2024-04-02 19:04:59 718人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

tk在科学养猪群里问bluerust、scz是否碰上过这个python坑, 示例1: bas = [ 'ba1', 'ba2', 'ba3', 'ba4', 'ba5' ] for

tk在科学养猪群里问bluerust、scz是否碰上过这个python坑,

示例1:

bas = [ 'ba1', 'ba2', 'ba3', 'ba4', 'ba5' ]
for ba in bas :
    print( ba )
    if ( ba.find( 'ba' ) != -1 ) :
        bas.remove( ba )
        print( bas )

print( bas )

即遍历list的过程中动态删除元素。

上述代码输出如下:

ba1
['ba2', 'ba3', 'ba4', 'ba5']
ba3                             // ba2被跳过去了
['ba2', 'ba4', 'ba5']
ba5                             // ba4被跳过去了
['ba2', 'ba4']
['ba2', 'ba4']                  // 列表未删干净

对示例1做点改动,

示例2:

bas = [ 'ba1', 'ba2', 'ba3', 'ba4', 'ba5' ]
for i in range( len( bas ) ) :
    print( i )
    print( bas[i] )
    if ( bas[i].find( 'ba' ) != -1 ) :
        del bas[i]
        print( bas )

print( bas )

上述代码输出如下:

0
ba1
['ba2', 'ba3', 'ba4', 'ba5']
1
ba3
['ba2', 'ba4', 'ba5']
2
ba5
['ba2', 'ba4']
3
Traceback (most recent call last):
  File "<stdin>", line 3, in <module>
IndexError: list index out of range
['ba2', 'ba4']

循环变量i只递增到3,进而抛出IndexError。

该坑的起因是,for循环中i的取值从最开始就固定了,实际上要求list在for循环中保持不变;遍历list的过程中动态删除元素,导致list发生变化,而i仍固执地按原计划递增遍历list,于是漏删元素、索引越界。

对此,wzhvictor给了5种解决方案。

方式1,利用filter函数

bas = [ 'ba1', 'ba2', 'ba3', 'ba4', 'ba5', 'tk' ]
bas = list( filter( lambda ba:ba.find( 'ba' ) == -1, bas ) )
print( bas )

方法2,重新构造list

bas = [ 'ba1', 'ba2', 'ba3', 'ba4', 'ba5', 'tk' ]
bas = [ba for ba in bas if ba.find( 'ba' ) == -1]
print( bas )

方法3,遍历list的拷贝,对原始list进行删除操作

bas = [ 'ba1', 'ba2', 'ba3', 'ba4', 'ba5', 'tk' ]
for ba in bas[:] :
    if ( ba.find( 'ba' ) != -1 ) :
        bas.remove( ba )

print( bas )

方法4

bas = [ 'ba1', 'ba2', 'ba3', 'ba4', 'ba5', 'tk' ]
for ba in bas[:] :
    if ( ba.find( 'ba' ) != -1 ) :
        bas.remove( ba )

print( bas )

方法5,倒序遍历

bas = [ 'ba1', 'ba2', 'ba3', 'ba4', 'ba5', 'tk' ]
for i in range( len( bas )-1, -1, -1 ) :
    if ( bas[i].find( 'ba' ) != -1 ) :
        del bas[i]

print( bas )

就tk的示例1而言,方法4其实不适用,方法4适合从list中删除所有特定值。

这个坑我没踩过,用过方法2、3、4或者它们的变种。没像wzhvictor那样细究过for循环中i取值从最开始就固定,但我本能地对循环中动态处理的对象不放心,又懒得看Python文档,所以要么重新构造list,要么复制list再操作,完美避坑。今日看了wzhvictor的文章,方法1没用过,方法5没想过,方法5比较骚包,我第一次见。

Python表面上的不确定性真多,也没啥大不了,我的经验是,能用简明直观确定性的写法,就不要骚包玩花活,性能优化是后话。再就是,单元测试,无需再多强调。

到此这篇关于Python遍历列表时删除元素案例的文章就介绍到这了,更多相关Python遍历列表内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Python遍历列表时删除元素案例

本文链接: https://www.lsjlt.com/news/120311.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python遍历列表时删除元素案例
    tk在科学养猪群里问bluerust、scz是否碰上过这个Python坑, 示例1: bas = [ 'ba1', 'ba2', 'ba3', 'ba4', 'ba5' ] for ...
    99+
    2022-11-11
  • python 的列表遍历删除
    python的列表list可以用for循环进行遍历,实际开发中发现一个问题,就是遍历的时候删除会出错,例如l = [1,2,3,4]for i in l:    if i != 4:     l.remove(i)print l这几句话本来...
    99+
    2023-01-31
    遍历 列表 python
  • python 的列表遍历删除实现代码
    python的列表list可以用for循环进行遍历,实际开发中发现一个问题,就是遍历的时候删除会出错,例如 l = [1,2,3,4] for i in l: if i != 4: l.remove...
    99+
    2022-06-04
    遍历 代码 列表
  • python 列表删除多个元素
    文章目录 一. 删除列表多个元素方法1 使用枚举:2. 使用python中List.pop()方法3. 使用python中List.remove()方法4. 注意 二. 使用双指针法删...
    99+
    2023-08-31
    python 开发语言
  • 解决Python 遍历字典时删除元素报异常的问题
    错误的代码① d = {'a':1, 'b':0, 'c':1, 'd':0} for key, val in d.items(): del(d[k]) 错误的代码② -- 对于Python3...
    99+
    2022-06-04
    遍历 字典 元素
  • Python中怎么实现列表边遍历边删除
    今天就跟大家聊聊有关Python中怎么实现列表边遍历边删除,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Python 中查看某个模块的用法Python 命令行输入后,可以使用 hel...
    99+
    2023-06-15
  • Python简单遍历字典及删除元素的方法
    本文实例讲述了Python简单遍历字典及删除元素的方法。分享给大家供大家参考,具体如下: 这种方式是一定有问题的: d = {'a':1, 'b':2, 'c':3} for key in d: d...
    99+
    2022-06-04
    遍历 字典 元素
  • python列表重复元素如何删除
    要删除列表中的重复元素,可以使用以下两种方法:1. 使用集合(set):将列表转换为集合,由于集合中的元素是唯一的,所以会自动删除重...
    99+
    2023-09-15
    python
  • python怎么删除列表中的元素
    有几种方法可以删除列表中的元素:1. 使用`del`关键字```pythonmy_list = [1, 2, 3, 4, 5]del...
    99+
    2023-09-26
    python
  • python怎么删除列表重复元素
    要删除列表中的重复元素,可以使用set()函数和list()函数的组合来实现。例如,假设有一个列表nums,其中包含了重复的元素:n...
    99+
    2023-10-24
    python
  • 使用python怎么删除列表元素
    使用python删除列表元素的方法:1.使用pop()方法删除;2.使用del语句删除;3.使用remove()方法根据值删除;具体方法如下:使用pop()方法删除python中pop()方法是用于移除列表中的一个元素(默认最后一个元素),...
    99+
    2022-10-10
  • python中如何对列表删除元素
    这篇文章主要介绍python中如何对列表删除元素,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!删除# remove:通过元素的值删除元素list1.remove('...
    99+
    2022-10-19
  • Python list列表删除元素(4种方法)
    在 Python 列表中删除元素主要分为以下 3 种场景: 根据目标元素所在位置的索引进行删除,可以使用 del 关键字或者 pop() 方法; 根据元素本身的值进行删除,可使用列表(list类型)提供的 remo...
    99+
    2023-09-18
    python 开发语言 后端 Powered by 金山文档
  • Python如何删除列表中重复元素
    这篇“Python如何删除列表中重复元素”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Python如何删除列表中重复元素”文...
    99+
    2023-07-06
  • python删除列表元素del,pop(),remove()及clear()
    目录一、del删除列表二、pop()方法删除列表元素三、remove()方法删除列表元素四、clear()删除列表元素前言: 列表元素能增加就可以删除,这篇文章介绍几种增加元素的方法...
    99+
    2022-11-13
  • Python怎么删除列表中重复元素
    直接遍历列表删除l1 = [1, 1, 2, 2, 3, 3, 3, 3, 6, 6, 5, 5, 2, 2] for el in l1: if l1.count(el) > 1: ...
    99+
    2023-05-14
    Python
  • python怎么安全地删除列表元素
    这篇“python怎么安全地删除列表元素”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“python怎么安全地删除列表元素”文...
    99+
    2023-06-29
  • python中如何删除列表中的元素
    本文将为大家详细介绍“python中如何删除列表中的元素”,内容步骤清晰详细,细节处理妥当,而小编每天都会更新不同的知识点,希望这篇“python中如何删除列表中的元素”能够给你意想不到的收获,请大家跟着小编的思路慢慢深入,具体内容如下,一...
    99+
    2023-06-06
  • python怎么删除列表中特定元素
    这篇文章主要介绍“python怎么删除列表中特定元素”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“python怎么删除列表中特定元素”文章能帮助大家解决问题。题目如下:给定一个仅包含大小写字母和空格...
    99+
    2023-06-30
  • python中list列表删除元素的四种方法实例
    目录在python列表中删除元素主要分为以下3种场景:del:根据索引值删除元素pop():根据索引值删除元素remove():根据元素值进行删除clear():删除所有元素补充: ...
    99+
    2022-11-11
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作