Python列表元素的循环删除问题
tags: Python Debug
问题
看下面这样一段代码, 想要去除邻接表中重复的边(无向图),
tb1 = [((0, 1), 2), ((1, 0), 2), ((1, 3), 3),((1, 4), 2), ((2, 4), 1), ((3, 1), 3),((3, 4), 4), ((4, 1), 2), ((4, 2), 1),((4, 3), 4)]for ((i, j), k) in tb1:# 对于无向图需要进行判断if i > j:tb1.remove(((i, j), k))
print(tb1)
得到了下面的结果:
[((0, 1), 2), ((1, 3), 3), ((1, 4), 2), ((2, 4), 1), ((3, 4), 4), ((4, 2), 1)]
最后一个元素并未被删除, 并且遍历显示((4, 2), 1)
这个元素并未被遍历.
原因分析
这里受到小傻狗@栋栋颻的启发, 在采用for ... in ...
语句对列表等结构进行遍历时, 如果进行删除, 则被删除元素的下一个元素会自动补充到in
指向的元素中, 这就导致41
被删除之后42
直接补充到了41
的位置, 然后in
继续进行下一轮的遍历, 42
就未被遍历了, 通过索引+while
的方式可以避免这个问题的出现.
tb1 = [((0, 1), 2), ((1, 0), 2), ((1, 3), 3),((1, 4), 2), ((2, 4), 1), ((3, 1), 3),((3, 4), 4), ((4, 1), 2), ((4, 2), 1),((4, 3), 4)]
i = 0
N = len(tb1)
while len(tb1) > N // 2:if tb1[i][0][0] > tb1[i][0][1]:tb1.remove(tb1[i])i -= 1i += 1
print(tb1)
得到正确的结果:
[((0, 1), 2), ((1, 3), 3), ((1, 4), 2), ((2, 4), 1), ((3, 4), 4)]
Python列表元素的循环删除问题相关推荐
- python列表元素零的移动_python列表多行
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 这个列表推导式共有145列: memberdef_list = and std: ...
- python列表元素都加倍_关于python列表增加元素的三种操作方法
关于python列表增加元素的三种操作方法 1.insert方法,该方法包含两个参数,第一个参数为插入的位置参数,第二个参数为插入内容 a = [0,0,0] b = [1,2,3] a.insert ...
- Python列表之for循环应用
Python列表之for循环应用 一.程序要求及目的 二.代码内容 三.代码运行 一.程序要求及目的 将列表中姓张的人名元素改为姓李的,使用for循环 二.代码内容 # 列表在for循环中使用 lst ...
- python列表元素如何求和
python实现列表对应元素求和的两种方法. 方法一:采用zip()方法: 1 2 3 4 5 6 7 8 9 10 11 12 # -*- coding: utf-8 -*- import math ...
- python列表元素交换位置_python删除列表元素5种方法,你会的是错误法还是最优解?...
删除列表元素很多同学想当然的认为不就是循环遍历加上if判断再del吗?真的有这么简单吗? 还是直接上代码看案例吧: import time# 删除下面列表中所有张姓元素,输出的结果应该是['李老大', ...
- Python 列表,for循环,元组的使用(修改、添加、删除、排序、切片)
Python 列表(List) Python的基本数据类型有整数,浮点数,布尔,字符串,它们是最基本的数据.在实际编程中,我们要经常组织由很多基本数据组成的集合,这些集合的不同组织方式就是:数据结构, ...
- python列表元素替换的数据结构_Python基础学习数据结构(第2讲:列表;第2讲:列表创建、添加元素、插入元素、替换元素、删除元素、其他常用方法和列表派生),第二,主讲,追加,推导,式...
列表也是一种序列结构,与元组不同,列表具有可变性,可以追加.插入.删除和替换列表中的元素. 1.创建列表 创建列表可以使用list([iterable])函数,或者用中括号[ ]将元素括起来,元素之间 ...
- python列表元素下标是什么_python列表中元素插入位置总结
python列表中元素插入位置总结 , python中列表去掉最后一个元素 ist.insert(index,obj) 列表与方法之间用点号相隔,括号内需要添入的参数分别是索引和要插入的元素. 要完成 ...
- python列表元素替换的数据结构_列表是Python中的一种数据结构。列表元素无序。...
[综合练习]It has made the headlines that the president's wife threatened her husbands with public exposu ...
最新文章
- 田志刚:要你共享,但不告诉你共享什么
- php - 数组倒序
- 【POJ 3273】 Monthly Expense (二分)
- UA STAT687 线性模型理论I 线性模型概述
- SAP Netweaver的负载均衡消息服务器 vs CloudFoundry的App Router
- centos7 安装Golang环境
- 面临重重挑战 华为造车之路任重道远
- 初学者python笔记(封装、反射、类内置attr属性、包装与授权)
- Firefox 3中的快捷键!
- matlab figure函数_如何在Matlab中使用GUI做一个简易音乐播放器? ---- (六)控件间的数据传递...
- ecshop bonuscontroller.php,ECSHOP线下红包不能支持最小订单
- python爬取换页_爬虫爬不进下一页了,怎么办
- python多进程调度模块multiprocessing实践实践
- OJ(Online Judge)系统及ACM测试题库大全
- java借书_用java语言实现借书系统
- 移动DDN专线及联通SDH专线接入路由器及防火墙配置实例
- linux spec 脚本,RPM包制作之Spec文件详解
- java77-GUL下拉菜单框和滚动条
- matlab中读取blf数据路径,需求可拆分车辆路径优化模型与BLF-GA算法设计
- 安川机器人程序还原_安川机器人使用说明书.pdf