我知道循环在python中是个坏主意,我应该避免它们。
好吧,我有几个我想避免的。
我有一张名叫脂质的清单:
class bead:
x = 0
y = 0
z = 0
LID = 0
t = 0
class lipid:
h = bead()
b = bead()
t = bead()
LID = 0我正在执行以下操作(代码如下):
h的2d数组,遍历所有的脂类和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发布于 2012-01-15 12:27:04
循环并不是个坏主意。只是循环密集的代码可能很慢。但是它并不是特定于循环的,只是Python在一般情况下没有其他语言那么快。我建议您不要避免循环,如果它们是最自然的表达您的算法。如果您的代码比您预期的或需要的要慢,那么就寻找优化它的方法(首先是分析)。
维基百科算法分析的文章可能对你有用。
发布于 2012-01-15 12:33:45
如何使用列表理解创建2d数组的示例如下:
hs = [[h() for i in range(8)] for j in range(8)]但是,正如注释中所指出的,这与为循环编写没有什么不同,因为列表理解是语法糖。如果它在可读性和维护方面更方便的话,就使用它。
注意:正如注释所指出的,列表理解的另一个好处是,它们通常比for循环和map函数提供更好的性能。
https://stackoverflow.com/questions/8869579
复制相似问题