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列表元素的循环删除问题相关推荐

  1. python列表元素零的移动_python列表多行

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 这个列表推导式共有145列: memberdef_list = and std: ...

  2. python列表元素都加倍_关于python列表增加元素的三种操作方法

    关于python列表增加元素的三种操作方法 1.insert方法,该方法包含两个参数,第一个参数为插入的位置参数,第二个参数为插入内容 a = [0,0,0] b = [1,2,3] a.insert ...

  3. Python列表之for循环应用

    Python列表之for循环应用 一.程序要求及目的 二.代码内容 三.代码运行 一.程序要求及目的 将列表中姓张的人名元素改为姓李的,使用for循环 二.代码内容 # 列表在for循环中使用 lst ...

  4. python列表元素如何求和

    python实现列表对应元素求和的两种方法. 方法一:采用zip()方法: 1 2 3 4 5 6 7 8 9 10 11 12 # -*- coding: utf-8 -*- import math ...

  5. python列表元素交换位置_python删除列表元素5种方法,你会的是错误法还是最优解?...

    删除列表元素很多同学想当然的认为不就是循环遍历加上if判断再del吗?真的有这么简单吗? 还是直接上代码看案例吧: import time# 删除下面列表中所有张姓元素,输出的结果应该是['李老大', ...

  6. Python 列表,for循环,元组的使用(修改、添加、删除、排序、切片)

    Python 列表(List) Python的基本数据类型有整数,浮点数,布尔,字符串,它们是最基本的数据.在实际编程中,我们要经常组织由很多基本数据组成的集合,这些集合的不同组织方式就是:数据结构, ...

  7. python列表元素替换的数据结构_Python基础学习数据结构(第2讲:列表;第2讲:列表创建、添加元素、插入元素、替换元素、删除元素、其他常用方法和列表派生),第二,主讲,追加,推导,式...

    列表也是一种序列结构,与元组不同,列表具有可变性,可以追加.插入.删除和替换列表中的元素. 1.创建列表 创建列表可以使用list([iterable])函数,或者用中括号[ ]将元素括起来,元素之间 ...

  8. python列表元素下标是什么_python列表中元素插入位置总结

    python列表中元素插入位置总结 , python中列表去掉最后一个元素 ist.insert(index,obj) 列表与方法之间用点号相隔,括号内需要添入的参数分别是索引和要插入的元素. 要完成 ...

  9. python列表元素替换的数据结构_列表是Python中的一种数据结构。列表元素无序。...

    [综合练习]It has made the headlines that the president's wife threatened her husbands with public exposu ...

最新文章

  1. 田志刚:要你共享,但不告诉你共享什么
  2. php - 数组倒序
  3. 【POJ 3273】 Monthly Expense (二分)
  4. UA STAT687 线性模型理论I 线性模型概述
  5. SAP Netweaver的负载均衡消息服务器 vs CloudFoundry的App Router
  6. centos7 安装Golang环境
  7. 面临重重挑战 华为造车之路任重道远
  8. 初学者python笔记(封装、反射、类内置attr属性、包装与授权)
  9. Firefox 3中的快捷键!
  10. matlab figure函数_如何在Matlab中使用GUI做一个简易音乐播放器? ---- (六)控件间的数据传递...
  11. ecshop bonuscontroller.php,ECSHOP线下红包不能支持最小订单
  12. python爬取换页_爬虫爬不进下一页了,怎么办
  13. python多进程调度模块multiprocessing实践实践
  14. OJ(Online Judge)系统及ACM测试题库大全
  15. java借书_用java语言实现借书系统
  16. 移动DDN专线及联通SDH专线接入路由器及防火墙配置实例
  17. linux spec 脚本,RPM包制作之Spec文件详解
  18. java77-GUL下拉菜单框和滚动条
  19. matlab中读取blf数据路径,需求可拆分车辆路径优化模型与BLF-GA算法设计
  20. 安川机器人程序还原_安川机器人使用说明书.pdf

热门文章

  1. vscode + angular
  2. requirejs 多页面,多js 打包代码,requirejs多对多打包
  3. [数据结构]A*寻路算法
  4. 如何使用Git上传项目代码到github
  5. Oracle truncate和delete的区别
  6. gitlab搭建之互备模式
  7. 没有共享存储和仲裁盘的SQL Server 2012HADR故障手动切换TSQL
  8. 对Html里的title属性的换行
  9. vasp软件全名是什么_Materials Studio软件常见问题与解答
  10. SQL必知必会-更新和删除数据