【发布时间】:2013-07-04 00:05:54
【问题描述】:
我有一个函数可以创建一个名为list_set 的空列表,并添加一个预先存在的列表的副本,
original_list,所以list_set[0] 是original_list。
该函数必须复制list_set[0],随机选择一个值并根据
预先存在的函数new_sum,然后将此新列表添加为list_set[1]。
同样,该函数必须复制list_set[1](这与
list_set[0]),在list_set[1]中随机选择一个值并对其进行操作
基于函数new_sum,并将其添加为list_set[2]。
函数必须 这样做 300 次。
在我的代码中,我注意到该函数正在创建 300 个相同的 original_list 副本并在每个列表中随机操作一个值。
def condition_manipulate(value):
list_set=[]
for i in range(0,value):
new_list=original_list[:]
i=random.choice(range(len(original_list)))
new_list[i]=new_sum(new_list[i])
list_set.append(new_list)
return list_set
如何修复此代码?非常感谢您的帮助
【问题讨论】:
-
你想要一个深拷贝。看看这个:stackoverflow.com/questions/948032/…
-
new_sum 是另一个实际执行操作的函数
-
new_sum 函数的接口是什么?它需要什么,返回什么?。也尝试将你的调用嵌套拆分成变量,让代码更清晰。对不起,你的代码很丑。
-
new_sum 采用它所采用的任何值,并创建一个 numpy 数组和一个列表的矩阵乘法。如果 new_sum 将 45 作为参数,那么它将执行 numpy.sum(numpy.dot(a[45][:100], initial_conditions[:100],其中 a 是 100 x 100 矩阵,initial_conditions 是列表。如果结果大于零,则 45 上的 new_sum 等于 1。如果 45 上的 new_sum 的结果小于零,则产生 -1
-
我认为你的代码很好。测试你的
new_sum函数,它可能是罪魁祸首。此外,您正在覆盖代码中的i循环变量,请确保这对您来说不是问题。