代码之家  ›  专栏  ›  技术社区  ›  Arayan Singh

多行For循环需要更多的时间

  •  0
  • Arayan Singh  · 技术社区  · 5 年前

    在单行中使用for循环:

    %%time
    y = [x*2 if x%2 != 0 else x+2 for x in range(10000000)]
    
    
    CPU times: user 1.27 s, sys: 150 ms, total: 1.42 s
    Wall time: 1.42 s
    

    在多行中使用for循环:

    %%time
    y =[]
    for x in range(10000000):
        if x%2 != 0:
            y.append(x*2)
        else:
            y.append(x+2)
    CPU times: user 2.45 s, sys: 198 ms, total: 2.65 s
    Wall time: 2.65 s
    

    0 回复  |  直到 5 年前
        1
  •  1
  •   duyue    5 年前

    这是因为附加到列表会导致此列表多次扩展空间。立即保留所需的空间将节省扩展成本。

    试试这个:

    y = [0] * 10000000
    for x in range(10000000):
         if x % 2 != 0:
             y[x] = x*2
         else:
             y[x] = x+2