【发布时间】:2012-03-01 08:49:37
【问题描述】:
我有一个相当大的循环需要运行 500 次,而且我对使用编程语言和进行这种类型的模拟是新手。
但我需要记录每次运行的结果,如果列表 (table1) 包含全 0、全 1 或两者的混合。
我只是想知道哪种方法可以最快地找出 500 次模拟中的哪一部分,生成一个包含全 0、全 1 或混合的列表,以及附加是否会使它减慢太多。
for x in range(0, 500):
times = 300
gamma_val = 2
table1 = [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
total = 0.0
while total < times:
table = [0 for i in range (21)]
for d1 in range(21):
if table1[d1]:
table[d1] = -(1/gamma_val)*math.log((random.random()))
else:
table[d1] = -(math.log(random.random()))
####Goes on to make new table1 with changes, either all 1's, all 0's or a mix of 0s #########and 1s
files1 = 0
files01 = 0
files0 = 0
if "1" "0" in table1 == True:
files01 += 1
elif 1 in table == True:
files1 += 1
elif 0 in table1 == true:
files0 += 1
【问题讨论】:
-
您的代码存在多个问题,难以给出正确答案。 1、压痕坏了。缩进改变了 Python 中程序的含义,如果没有适当的缩进,就不可能推断出正确的含义。 2.
if "1" "0" in table1==True:是有效的,但非常奇怪,而且肯定是非预期的 Python 代码。这段代码应该检查什么? 3. 你没有调用append()方法——你只是在查找它们。这样,就不可能知道您要附加到列表中的是什么。 4.files1[]等不是有效的Python。 -
您要在两个循环的中间导入两个东西?
-
@Ben:导入很奇怪,但我们首先必须解决这段代码中更紧迫的问题。 :)
-
“什么方法最快”。是您最不关心的问题。第一的。找点工作。然后。如果速度太慢。使用分析器找出减速是什么。 “担心附加功能可能太慢”是无关紧要的。不要“担心”。测量。
-
您的
while循环似乎也是无限的。我在循环中没有看到您调整total或times的值。
标签: python list append tracking