1
我想将类分配给节点列表,并根据类标记将所有节点分隔成单独的列表。例如,如果我们有以下代码:在Python中减少列表尺寸
#define number of classes
MaxC=5
index=[4 4 5 1 4 1 4 5 4 4 3 1 3 3 1 1]
def indices(index,func):
return[v for (v,val) in enumerate(index) if func(val)]
##Create node classes
nodeclass=[[],[],[],[],[],[],[],[],[],[]]
for k in range(0,MaxC):
nodeindex=indices(index, lambda p:p==k)
nodeclass[k].append([nodeindex])
然后我们就会对应每个类的节点索引位置列表的列表:
[[[[]]] [[[3, 5, 11, 14, 15]]] [[[]]] [[[10, 12, 13]]]
[[[0, 1, 4, 6, 8, 9]]] [] [] [] [] []]
不过,这一结果产生上列出清单列表上的名单上。当我想遍历节点索引位置时,这在后面的脚本中会变成问题,但是由于迭代器正在接收列表而不是单个元素,因此会收到返回的错误。
TL; DR:有没有一种方法可以更有效地生成这些索引位置,以便我不会收到列表清单?在最坏的情况下,如果这是不可能的,如何压平列表的形式:
[[],[3,5,11,14,15],[],[10,12,13],[0,1,4,6,8,9],[],[],[],[]]
请问这有帮助吗? http://stackoverflow.com/questions/406121/flattening-a-shallow-list-in-python or this:http://stackoverflow.com/questions/952914/making-a-flat-list-列表不在Python中的列表 –
这是什么? '指数= [4。 4. 5. 1. 4. 1. 4. 5. 4. 4. 3. 1. 3. 3. 1. 1.]'?这不适合Python。 –
@ReutSharabani固定。我从iPython终端复制了读数,并忘记清除这些时间段。 –