一边遍历列表,一边修改列表甚至删除列表元素所带来的结果混乱

具体地,假设列表中存在k个值为a的元素,删除前k-1个元素,保留最后一个,不同元素在列表中的相对位置不应被改变。这是我们今天要执行的程序: 

v = list(eval(input()))
print("before:",v)

for x in v:#正序输出
    cnt = v.count(x)
    if cnt >= 2:
        for i in range(cnt-1):
            v.remove(x)

结果:

你们看并没有得到想要的结果,这是什么原因呢:就是一边遍历列表一边修改列表甚至删除列表元素可能使得遍历发生混乱,产生意料之外的结果。修改如下:

v=list(eval(input()))#输入多个元素,生成列表
print("before:",v)#输出开始的列表
for x in v[::-1]:#倒序循环
    numbers=v.count(x)#计算相同元素的数量
    if numbers >=2 :#如果有重复的
            for i in range(numbers-1):
                v.remove(x)#就删除前面所有相同的元素,就剩下最后一个
print("after:",v)#输出删除相同元素后的列表


结果:

倒序之后就不会这样了,因为删除该元素的时候并没有循环到该元素,这样就不会发生混乱了。

相关推荐

  1. python之列表

    2024-03-21 03:34:01       20 阅读
  2. 使用foreach和stream修改List列表

    2024-03-21 03:34:01       9 阅读
  3. Python: 列表元素增加

    2024-03-21 03:34:01       41 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-21 03:34:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-21 03:34:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-21 03:34:01       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-21 03:34:01       20 阅读

热门阅读

  1. 【代码问题】mmcv+mmseg版本升级报错

    2024-03-21 03:34:01       17 阅读
  2. 【LAMMPS学习】三、构建LAMMPS(2)Make构建

    2024-03-21 03:34:01       21 阅读
  3. 2.4 ROC曲线是什么?

    2024-03-21 03:34:01       21 阅读
  4. 主动学习:外语学习的质变之路

    2024-03-21 03:34:01       20 阅读
  5. 24计算机考研调剂 | 天津大学

    2024-03-21 03:34:01       19 阅读
  6. QT5.14.2 Qt窗体应用开发的精髓

    2024-03-21 03:34:01       22 阅读
  7. 题解:CF1923D(Slimes)

    2024-03-21 03:34:01       22 阅读
  8. 蓝桥杯2023省赛:阶乘求和

    2024-03-21 03:34:01       18 阅读