避免在python中循环

Yot*_*tam 2 python loops

我知道循环在python中是一个坏主意,我应该避免它们.

好吧,我有几个我想避免的.

我有一个名为lipid的东西列表:

class bead:
    x = 0
    y = 0
    z = 0
    LID = 0
    t = 0

class lipid:
    h = bead()
    b = bead()
    t = bead()
    LID = 0
Run Code Online (Sandbox Code Playgroud)

我正在做以下(代码如下):

  1. 初始化一个2d数组的hs遍历所有脂质和
  2. 确定他们是否被计为U或减少
  3. 增加适当的价值 h

我怎样才能避免至少第一次循环?

1:

class h:
    cU = 0
    cD = 0
    hU = 0
    hD = 0
    h = 0

  for i in range(0,8):
        hs.append([])
        for j in range(0,8):
            index = (i,j)
            hn = h()
            hs[i].append(hn)
Run Code Online (Sandbox Code Playgroud)

2和3:

 for LID in lipids:
        l = lipids[LID]
        up = l.h.z > l.t.z
        X = (int)(l.b.x*8/L)
        Y = (int)(l.b.y*8/L)
        Z = (l.b.z)*0.5
        if up:
            hs[X][Y].hU += Z
            hs[X][Y].cU += 1
        else:
            hs[X][Y].hD += Z
            hs[X][Y].cD += 1
Run Code Online (Sandbox Code Playgroud)

dsi*_*ign 7

循环不是一个坏主意.只是循环密集型代码可能很慢.但它并不特定于循环,只是Python不像其他语言那么快.我建议你不要避免循环,如果它们是你的算法最自然的表达.如果你的代码变得比你期望或需要的慢,那么寻找优化它的方法(分析,开始).

维基百科中关于算法分析的文章可能对我有用.

  • 即使"循环密集型代码可能很慢"也没有多大意义.如果你的算法是O(n),它将是O(n),无论循环是否隐含.许多**很多**问题需要一些O(n)算法.如果你把一个循环推入优化的C代码中,常数因子会稍低一些,但它仍然是一个循环(尽管如果你是那么绝望,它*是一个有效的优化). (3认同)