【问题标题】:IndexError: list index out of range with nested listIndexError:列表索引超出嵌套列表的范围
【发布时间】:2019-02-13 03:21:08
【问题描述】:
for i in list404:
    for j in range(len(table)):
        if table[j][0] == i:
            table.remove(table[j])
    for k in range(len(stack)):
        if stack[k][0] == i:
            stack.remove(stack[k])
    for l in range(len(symbols)):
        if symbols[l] == i:
            symbols.remove(symbols[l])

list404 是股票列表。我想删除表格中的股票,堆栈和名称显示在 list404 中的符号。表格和堆栈是我猜的嵌套列表。结构是这样的:[[a, b, c], [a, b, c], [a, b, c]]。我想要的只是检查 a 是否在 list404 中。如果存在,则从表中删除整个列表。

这是错误。 IndexError: list index out of range in if table[j][0] == i:

谁能帮帮我???谢谢!

【问题讨论】:

  • 您正在循环中从table 中删除元素,这意味着您不再拥有与循环开始时从len(table) 中获得的相同数量的元素。你最终会跑出列表的末尾。
  • 哦,我明白了!但是我该如何解决这个问题???
  • 停止从列表中删除元素。 :-) 或者在列表中向后迭代(从结尾到开头),这会阻止你跑到最后。

标签: list python-3.6 nested-lists


【解决方案1】:

正如Ken White 所说,您不应该在其长度的循环中从表中删除元素, 我认为您可以创建一个新列表,如果该项目在您的条件下有效,请将其放入新列表中:

注意:由于我不知道您的数据结构究竟是什么样的,我只是编写了一个示例代码,但您可以为您的数据更改它。

new_table = []
new_stack = []
new_symbols = []
for i in list404:
    for j in range(len(table)):
        if table[j][0] != i:
            new_table.append(table[j])
    for k in range(len(stack)):
        if stack[k][0] != i:
            new_stack.append(stack[k])
    for l in range(len(symbols)):
        if symbols[l] != i:
            new_symbols.append(symbols[l])

【讨论】:

    猜你喜欢
    • 2016-05-24
    • 2011-10-31
    • 2015-06-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多