鱼C论坛

 找回密码
 立即注册
查看: 997|回复: 7

[已解决]关于列表问题,请教下!!!

[复制链接]
发表于 2018-7-12 17:07:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
实践中遇到个问题,具体下面,我的想法是每隔数到3的时候删除列表里对应的元素,但是加了list1.remove后和不加有两种不同结果,这个是什么原因造成的,实测后面的结果是对的
加了remove后
  1. count=0
  2. list1=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
  3. for i in list1:
  4.         count += 1
  5.         if count==3:
  6.                 count=0
  7.                 list1.remove(i)
  8.                 print(i)
复制代码

输出结果是:

  1. 2
  2. 6
  3. 10
  4. 14
复制代码

不加remove直接打印数到3个元素
  1. count=0
  2. list1=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
  3. for i in list1:
  4.         count += 1
  5.         if count==3:
  6.                 count=0
  7.                 print(i)
复制代码

输出结果:
  1. 2
  2. 5
  3. 8
  4. 11
  5. 14
复制代码
最佳答案
2018-7-12 17:24:22
因为你的循环体内修改了这个列表,所以下一次循环开始的时候列表的下标索引对应的值也已经修改了
你可以复制一份来进行这种操作
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-7-12 17:18:47 | 显示全部楼层
不可以遍历一个列表的同时增删这个列表啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-12 17:24:08 | 显示全部楼层
这位小哥,没看懂你的需求
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-12 17:24:22 | 显示全部楼层    本楼为最佳答案   
因为你的循环体内修改了这个列表,所以下一次循环开始的时候列表的下标索引对应的值也已经修改了
你可以复制一份来进行这种操作
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-12 18:00:18 | 显示全部楼层
因为:你删除第三个索引后,列表发生了变化
原来的第4个索引变成了现在的第3个索引,循环默认认为第三个索引已经取过了,会取现在的第4个索引,也就是原来的第5个索引

简单点说:你删除第3个索引后,就会跳过第4个索引,从第5个索引开始判断,从而结果都依次多顺延了一位

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-12 18:18:20 | 显示全部楼层
  1. count = 0
  2. list1=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
  3. cz = 0 #删除操作次数
  4. for i in list1:
  5.         cz += 1
  6.         s = 3 * cz - cz #每多操作一次,需要把索引向前移动一位
  7.         if s >= len(list1):
  8.             break
  9.         m = list1.pop(s)
  10.         print m
  11. print list1
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-12 18:30:27 | 显示全部楼层
list1 = [1,2,3]
for i in list1:
        list1.remove(i)
        print(i)
你可能会以为上面它打印的是1 2 3,但是结果是1和3,这感觉像 删除索引位置的值 然后跳到 删除下一个索引其位置对应的值
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-7-12 19:57:02 From FishC Mobile | 显示全部楼层
谢谢大家,明白了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-10-3 02:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表