在lis中向列表追加数据

2024-09-29 19:06:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一些格式为label+numpy数组的数据

 x = ('red', array([ 0.,  1.,  0., ...,  0.,  0.,  0.]))

以及一个list[[]]和一个循环,根据一些条件,它应该将这些元素放入list-withlist中。我尝试了list[somevalue].append(x),但当somevalues>;0时,我得到一个错误索引器错误:list index超出范围。我做错什么了?在

另外,以后我还需要能够从子列表中访问numpy数组来进行一些处理。有人能帮我吗?在


Tags: 数据numpy元素格式错误red数组条件
3条回答

如果不发布更具体的代码,很难帮上忙。但根据您的描述,您面临的具体问题是,您无法使用尚不存在的索引来获取列表的值。如果以[[]]开头,则只有一个元素的列表,它本身就是一个没有元素的列表。所以0将是唯一可以通过list[somevalue]访问的索引。听起来像是想要一个defaultdict(请参阅collections模块)或defaultlist:creating a defaultlist in python

您有一个列表l,它正好包含一个元素(这个元素正好是另一个列表,但在这里这不是很相关),因此:

l[0]  # WORKS: this is the first item in the list

l[1]  # INVALID: there is no item here, so it raised an IndexError

这是其他人都在说的基本答案,我只是想说得非常清楚。请特别注意,Python列表是用第一个元素在0而不是1编制索引的,因此长度为1的列表在索引0处只有一个元素。在

一种更容易自己识别问题的方法是将使用的复合行拆分为两行这是一种常见的调试方法,通常非常有用:

^{pr2}$

在这里,回溯将更清楚地指出问题所在。在

(顺便说一句,我不同意dpkp使用“defaultlist”的建议,因为我认为这是一个对于初学者问题来说过于复杂、非标准和高级的解决方案。相反,如果您想解决这个问题的方法,即自动创建一个要附加到的列表,请将其作为一个单独的问题发布,并详细说明您为什么需要它,我认为您可能希望使用整型键的defaultdict,但这应该等待完整的问题。)

听起来好像你在说:如果我的列表L中的位置somevalue上已经有一个子列表,那么将x追加到它上面。如果不是,则创建一个新的列表,如L[somevalue],值为x。如果是这种情况,那么在没有其他元素的情况下,就不能直接引用那些不存在的元素。在

如果somevalue始终是列表0,1,2中的下一个元素,则可以使其与列表一起工作,但如果它可以是{},而当只有元素0,1存在时,则可以使用字典。这使您可以引用D[5]并以非顺序生成不存在的项。在

D={}
D[somevalue] = D.get(somevalue,[]) + [x]

如果将+[x].get()一起使用,将避免尝试.append()NoneType对象的错误。在

相关问题 更多 >

    热门问题