带列表理解的向量化,避免带有两个输入的追加

时间:2018-07-22 02:43:37

标签: list-comprehension networkx

我正在处理网络邻居列表的列表,这意味着每行中的项目数是不同的。我的原始代码有效:

public partial class ContactDetail
{
   //other properties
    [JsonIgnore]
    public virtual Manager Manager { get; set; }
}

我可以通过对每组邻居使用列表理解来部分加快速度:

y = []
neighbors = [list of lists node-neighbors of varying lengths]
for i in range(len(neighbors):             ## the length of all nodes
    for j in range(len(neighbors[i]):      ## the number of neighbors node(i) has
        x = [i, neighbors[i][j]]           ## makes a list of [node(i), neighbor(i)] 
        y.append(x)                        ## adds it to the end of the list
y = pd.DataFrame(y, columns = ['Source', 'Target'])  

我真正想做的是对两个输入的数组进行矢量化处理,但是由于[i]用于查找len(neighbors [i]),因此会出现一个错误,即未定义'i'。

for i in range(len(neighbors)):
    x = [(i, neighbors[i][j]) for j in range(len(neighbors[i]))]
    y.extend(x)
y = pd.DataFrame(y, columns = ['Source', 'Target']) 

我还尝试了一种嵌套列表理解,但它不喜欢它:

q = range(len(neighbors))
y = [(i, neighbors[i][j]) for i, j in q, len(neighbors[i])]

也尝试浏览两个列表不起作用:

y = [[(i, neighbors[i][j]) for j in range(len(neighbors[i]))] for i in q]

0 个答案:

没有答案