访问列表python-索引的第n个元素不存在错误
我有以下形式的数据:访问列表python-索引的第n个元素不存在错误,python,list,Python,List,我有以下形式的数据: list_of_numbers = [[8, 10], [10, 8, 1, 0], [6], [4, 0, 1, 2, 3], [12]] 我试图提取此列表的第一个和第二个元素,如下所示: [n[0] for n in list_of_numbers] 这对第一个元素很有效,但是,当我尝试以相同的方式提取第二个元素时,会出现一个错误(IndexError:list index out range)。我意识到这是因为列表中的一些列表没有第二个元素。但是,只要第二个元素存
list_of_numbers = [[8, 10], [10, 8, 1, 0], [6], [4, 0, 1, 2, 3], [12]]
我试图提取此列表的第一个和第二个元素,如下所示:
[n[0] for n in list_of_numbers]
这对第一个元素很有效,但是,当我尝试以相同的方式提取第二个元素时,会出现一个错误(IndexError:list index out range)。我意识到这是因为列表中的一些列表没有第二个元素。但是,只要第二个元素存在,我就需要提取它,如果它不存在,则需要NaN/missing。如何在代码中实现这一点
谢谢 您可以使用条件列表理解来检查内部列表的长度,并且仅当它们超过某个长度时才对它们进行索引:
index = 1
[i[index] if len(i)>index else float('nan') for i in list_of_numbers]
# [10, 8, nan, 0, nan]
您可以使用条件列表理解来检查内部列表的长度,并且仅当它们超过某个长度时才为它们编制索引:
index = 1
[i[index] if len(i)>index else float('nan') for i in list_of_numbers]
# [10, 8, nan, 0, nan]
当列表不够长时,此解决方案将放置
None
。你可以用你喜欢的任何东西替换它(例如,np.nan
)
解决方案:
i = 1
[None if len(n) <= i else n[i] for n in list_of_numbers]
当列表不够长时,此解决方案将放置
None
。你可以用你喜欢的任何东西替换它(例如,np.nan
)
解决方案:
i = 1
[None if len(n) <= i else n[i] for n in list_of_numbers]
可能的重复可能的重复