鱼C论坛

 找回密码
 立即注册
查看: 1450|回复: 6

[已解决]python for 循环问题求解

[复制链接]
发表于 2019-12-31 22:53:03 | 显示全部楼层 |阅读模式

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

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

x
i = [[],[],[]]
for each in i:
        i.remove(each)



这段代码,想要把列表i中的空列表给一个一个删掉,但是,它只会删除两个,最后结果 i = [[]],这是为什么啊,为什么还会剩下一个空列表?
最佳答案
2019-12-31 23:15:58
本帖最后由 jackz007 于 2019-12-31 23:18 编辑

        由于 i 在循环中有改变,所以,循环应该依据 i 的副本而非 i 本身。
  1. i = [[] , [] , []]
  2. for each in i[:]:
  3.     i . remove(each)
  4. print(i)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-12-31 23:12:57 | 显示全部楼层
>>> i = [1,2,3]
>>> for each in i:
        i.remove(each)
      
>>> i
[2]

这不是你空不空的问题。问题在于不可能   边遍历列表边删除
i = [1,2,3]
删个 1
i = [2,3]
还是原来的i吗?

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
zltzlt + 1 + 1

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-12-31 23:15:58 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2019-12-31 23:18 编辑

        由于 i 在循环中有改变,所以,循环应该依据 i 的副本而非 i 本身。
  1. i = [[] , [] , []]
  2. for each in i[:]:
  3.     i . remove(each)
  4. print(i)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-12-31 23:17:16 | 显示全部楼层
本帖最后由 Croper 于 2019-12-31 23:18 编辑

尽量不要在循环里删除循环体里的元素,除非你知道它的__iter__函数和__next__函数是怎么写的。
对于列表,推测其是按下标来循环的。
于是,你这一段相当于
  1. i.pop(0)
  2. i.pop(1)
  3. i.pop(2) #错误,退出循环
复制代码

于是,还剩一个原来下标为1的元素。

评分

参与人数 1荣誉 +1 鱼币 +1 贡献 +1 收起 理由
zltzlt + 1 + 1 + 1

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-12-31 23:30:03 From FishC Mobile | 显示全部楼层

我写的话会这样写:
while i:
    i.pop(0)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-12-31 23:31:26 | 显示全部楼层
i = [[],[],[]]
while len(i):
    del(i[0])

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
zltzlt + 1 + 1

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-12-31 23:59:33 | 显示全部楼层
不建议在循环的时候,去修改序列长度,会导致报错的

  1. i = [[],[],[]]
  2. res = i.copy()
  3. for each in i:
  4.         res.remove(each)
  5. print(res)
复制代码

评分

参与人数 1荣誉 +2 鱼币 +2 贡献 +1 收起 理由
zltzlt + 2 + 2 + 1

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-11 22:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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