我知道在python中循环是个坏主意,我应该避免它们。
好吧,我有几个我想避免的。
我有一个名为lipid的列表:
class bead:
x = 0
y = 0
z = 0
LID = 0
t = 0
class lipid:
h = bead()
b = bead()
t = bead()
LID = 0
我正在执行以下操作(代码如下):
U
或向下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)
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
循环不是个坏主意。只是循环密集型代码可能会慢一些。但它并不是特定于循环的,只是Python在总体上不如其他一些语言快。如果循环是算法中最自然的表达式,我建议您不要避免循环。如果您的代码比预期或需要的要慢,那么请寻找优化它的方法(首先是分析)。
关于维基百科算法分析的{a1}可能对你有用。
如何使用列表理解创建二维数组的示例如下:
然而,如注释中所述,这与为循环编写没有区别,因为列表理解是语法上的糖。如果它在可读性和维护性方面更方便的话,就可以使用它。
注意:正如注释所指出的,列表理解的另一个好处是它们通常比
for
循环和map
函数提供更好的性能。相关问题 更多 >
编程相关推荐