lingcooo 2022-06-19 21:28 采纳率: 90.9%
浏览 8
已结题

remove方法问题,求解

问题遇到的现象和发生背景

不明白为什么列表不能清空,转移。

问题相关代码,请勿粘贴截图
san_ord = ['香菜', '葱花', '油条', '鸡蛋']
finished_san = []

for i in san_ord:
    print(f'I made your "{i}".')
    finished.append(i)
    san_ord.remove(i)
print(finished_san)
print(san_ord)


运行结果及报错内容
I made your "香菜".
I made your "油条".
[]
['葱花', '鸡蛋']

我的解答思路和尝试过的方法
我想要达到的结果

想用remove方法在循环过程中清空san_ord列表,并转移到finished_san列表中。
最后只显示两个元素,不清楚什么原因

  • 写回答

1条回答 默认 最新

  • 请叫我问哥 Python领域新星创作者 2022-06-19 21:38
    关注

    当使用for遍历列表的同时去修改列表本身的长度,就会发生这样的问题,因为列表长度变了,所以for遍历跳过了一些元素。可以遍历列表的副本解决这个问题。
    另外finished_san列表名字在for循环里写错了,所以会报错。

    for i in san_ord[:]:
        print(f'I made your "{i}".')
        finished_san.append(i)
        san_ord.remove(i)
    print(finished_san)
    print(san_ord)
    

    运行结果

    I made your "香菜".
    I made your "葱花".
    I made your "油条".
    I made your "鸡蛋".
    ['香菜', '葱花', '油条', '鸡蛋']
    []
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 7月15日
  • 已采纳回答 7月7日
  • 创建了问题 6月19日

悬赏问题

  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么