Python中循环的优化与加速

2024-10-02 08:24:47 发布

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

如何优化这三段代码? 尤其是第三种情况,因为列表值之间有许多组合,而且输入1000次的时间会危险地更长。你知道吗

代码1:

e00=[]
for i in range(len(c1)):
    for j in range(len(d1[i])):
        if d1[i][j]%2==0:
           d = [c1[i],d1[i][j]]
           e00.append(d)

代码2:

sciezki=[]
for i in range(len(out2)):     
    x1 = out2[i][-len(out2[i])]
    x2 =out2[i][-1]    
    z1 = nx.shortest_path(g, x1, x2)  
    if z1 == out2[i] and len(z1)==8:
          sciezki.append(z1)

代码3:

out=[] 
for h in range(len(k)):
    if len(out)!=0:
       k2 = [out, k[h]]
       for q in range(len(k2[0])):
           for w in range(len(k2[1])):
               r = list(chain(k2[0][q],k2[1][w]))
               p = [n for n, _ in groupby(r)]
               if len(p)==h+2:
                  out.append(p)  
    else:
       for i in range(len(k[0])):
           for j in range(len(k[1])):
               r = list(chain(k[0][i],k[1][j]))
               p = [n for n, _ in groupby(r)]
               if len(p)==3:
                   out.append(p)

Tags: 代码inforlenifrangek2out
1条回答
网友
1楼 · 发布于 2024-10-02 08:24:47

代码1

将条件列表与枚举一起使用:

e00 = [[c_val, d_val] 
       for i, c_val in enumerate(c1) 
       for d_val d1[i] 
       if not d_val % 2]

代码2

只需稍作修改。你知道吗

g = ...  # Undefined in sample code.
sciezki = []
for out2_val in out2:     
    x1 = out2_val[-len(out2_val)]
    x2 = out2_val[-1]    
    z1 = nx.shortest_path(g, x1, x2)  
    if z1 == out2_val and len(z1) == 8:
        sciezki.append(z1)
        x = '\n'.join(map(str,sciezki))  # Remove if possible. 

相关问题 更多 >

    热门问题