gpt4 book ai didi

python - Python 中列表维度的减少

转载 作者:行者123 更新时间:2023-12-01 04:39:37 28 4
gpt4 key购买 nike

我正在尝试将类分配给节点列表,并根据类标签将所有节点分成单独的列表。例如,如果我们有以下代码:

#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],[],[],[],[]]

最佳答案

将最后一行更改为:

nodeclass[k].extend(nodeindex)

您正在创建的两个额外列表包装发生在:

  1. indices 函数内的列表理解。
  2. [nodeindex] 包含在追加调用中。

关于python - Python 中列表维度的减少,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31006020/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com