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}
我有一个 组 列表的列表,我正在尝试通过将组中的每个元素作为值分配给键来创建字典。但是,其中一个组只是一个空列表。我尝试使用 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}