【问题标题】:Is it always wrong to modify a list while iterating on it? and why?在迭代列表时修改列表总是错误的吗?为什么?
【发布时间】:2017-03-09 19:32:46
【问题描述】:

我有一个包含我的数据的列表,格式如下:

data = [[[1, 3, 4, 5, 7], [A, B, C]],
        [[2, 3, 8, 2, 9], [F, C, C]], 
        [[6, 3, 1, 3, 1], [F, E, D]], 
        [[2, 3, 7, 0, 3], [F, C, F]], 
        ...
        [[0, 3, 3, 4, 5], [F, B, A]]]

在我的程序中,我会检查是否存在具有固定值的列(例如仅包含 3 的第二列。如果找到,我应该将其从数据中删除。我们可以迭代的解决方案之一列表并逐个元素删除此列。使用以下代码:

for data_line in data:
    del data_line [0][1]

这样好吗?这会导致不稳定或任何其他问题吗? 请解释..

提前致谢

解决方案总结

感谢所有为这个问题做出贡献的人,总结下面的宝贵贡献,我们可以说:

可以修改您正在迭代的列表的内容,但不能删除其中的元素,即只要修改不会改变 MAIN 列表的长度,那就没问题了。

【问题讨论】:

  • 你在发布这个问题之前搜索过(例如在谷歌中)吗?我认为没关系,因为您不修改列表本身,而是修改他的内容。
  • @Stargateur 我搜索了,但意见不同,这就是为什么我想请专家解释一下。感谢您的评论。
  • 与标题相反,你迭代的列表不是你修改的,所以没关系。
  • 你的修改不会改变外层列表的长度

标签: python python-2.7 list iteration


【解决方案1】:

您可以在迭代时修改列表的元素的属性,但不建议修改列表成员本身。你做的是前者,所以不用担心。

【讨论】:

    猜你喜欢
    • 2012-06-04
    • 2014-09-17
    • 2017-12-05
    • 1970-01-01
    • 2010-10-19
    • 2018-10-12
    • 2020-07-28
    • 1970-01-01
    相关资源
    最近更新 更多