python语言的陷阱

这里讲一个我用python语言的一个故事:

     故事是我在写一个遗传算法时遇到的,我用一个列表保存历史最优解,但是历史最优解会发生偷偷“变异”的情况,源程序比较大,这里我构建了一段具有相似情形的代码。

   下面的代码很简单, 求f = -(x - 5)^2 - (y - 5)^2 + 10的最优解 x = 0,1,...10   y = 0, 1,..10很明显x = 5 y = 5时取得最大值10, 但是运行结果会让你大跌眼镜的,最终的输出结果为[10, 10] : 10,通过这个简单的程序,相信你一定一眼就能看出陷阱所在,但当程序规模比较大时有时不注意会自己构造出这样的陷阱,坑死人啊。

bestvalue = -1

bestxy = []

newxy = []

for  x in range(11):

     for  y in range(11):

          f = -((x-5)**2 + (y-5)**2 + 10)

          newxy[0]=x
 
          newxy[1]=y

          if f < bestvalue:

             best = f

             bestxy = newxy

print '%s : %s' % (bestxy, best)


                     

你可能感兴趣的:(python,列表,陷阱)