IndexError: list index out of range due to empty list within list

IndexError: list index out of range due to empty list within list

我有一个 列表的列表,我正在尝试通过将组中的每个元素作为值分配给键来创建字典。但是,其中一个组只是一个空列表。我尝试使用 filter() 函数来消除该空列表,我也尝试使用 remove() 函数,但是,这些工作的 none。它会导致以下错误:

my_dict = {'letter': g[0], 'my_arr': g[1], 'second_letter_conf': g[2]}
IndexError: list index out of range

这是我试过的:

import numpy as np

my_list = [['A', np.array([4, 2, 1, 6]), [['B', 5]]], [' '], ['C', np.array([8, 5, 5, 9]), [['D', 3]]]]
# my_list = list(filter(None, my_list)) # does not work

for g in my_list:
    # if g == [' ']:
    #     my_list.remove(g) # does not work
    my_dict = {'letter': g[0], 'my_arr': g[1], 'second_letter_conf': g[2]}

我哪里错了?如何从 my_list 中删除那个空列表?

您不能在安全迭代时改变 list。但是您可以跳过该元素并移至下一个;你们真的很亲密:

for g in my_list:
    if g == [' ']:  # I might suggest instead doing if len(g) != 3:
                    # if any length 3thing is good, and other lengths should be discarded
        continue  # Skip this element, go to next
    my_dict = {'letter': g[0], 'my_arr': g[1], 'second_letter_conf': g[2]}

如果您需要将它从 my_list 中排除(您将一遍又一遍地使用它并且不想在将来使用它),请快速 pre-filter listcomp 是最简单的解决方案(如果它允许您假设剩余的长度为三个数据,它将允许您在后续使用中解压缩 cleaner/more-self-documenting 代码):

my_list = [x for x in my_list if x != [' ']]
for let, arr, let2_conf in my_list:
    my_dict = {'letter': let, 'my_arr': arr, 'second_letter_conf': let2_conf}