python中的奇怪赋值

python中的奇怪赋值,python,Python,我正在尝试用python开发一个变异(遗传算法)操作符。我的总体是一个元组数组-(数组(解决方案),浮点(目标函数))。 考虑到本例中解决方案的大小为1,以下是我的测试代码: position = 4 ind1 = population[position] p1 = () p1 = ind1[0] point = 0) new_point = 4 print "bla", population population[position][0][point] = new_point print "p

我正在尝试用python开发一个变异(遗传算法)操作符。我的总体是一个元组数组-(数组(解决方案),浮点(目标函数))。 考虑到本例中解决方案的大小为1,以下是我的测试代码:

position = 4
ind1 = population[position]
p1 = ()
p1 = ind1[0]
point = 0)
new_point = 4
print "bla", population
population[position][0][point] = new_point
print "pop", population
if(flag == 1):
    ind1 = (p1,dist(p1))
    population[position] = ind1
else:
    ind1 = (p1,heuristic_dist(p1))
    population[position] = ind1
以下是初始人口:

bla[([11],0.0015072271967127016),([8],0.0573155547768569),([8],0.0573155547768569),([4],0.0573155547768569),([2],0.0573155547768569),([4],0.0573155547768569),([2],0.05731555455547768569),([2],0.05731555455555477569),([4],0.05735555555477569),[15573549],[15573549],[5]

我希望只替换位置4中的元组,但它会替换包含值[2]的所有元组,如下所示:

波普[([11],0.0015072271967127016),([8],0.0573155547768569),([8],0.0573155547768569),([4],0.0573155547768569),([4],0.0573155547768569),([4],0.0573155547768569),([4],0.057315554155547768569),([4],0.05731555455555477569),([4],0.0573555555555477569),[4],[15573557354549],[5],[5],[5],[5],[5],[5],[5],[5],[5],[5],[5],[5],[5],[5],[5],[5],[5],[5],[5]


为什么??有人能帮我吗?

我运行了你的代码,它在
point=0行上给出了
SyntaxError
如果我删除括号,我会得到
name错误:没有定义名称“population”
。请提供一个演示问题的示例。几乎可以肯定,问题在于您构建
bla
的方式。如果将同一元组分配给列表的不同元素
bla
,则存储了对该元组的多个引用。更改其中一个会更改引用的目标,如果列表中有多个对该目标的引用,则对一个的更改将反映在所有列表中。在构建列表时使用
copy.deepcopy()
,以确保每个列表元素将引用元组的单独实例。