更改列表中的变量不会影响列表

时间:2016-06-25 17:06:02

标签: python list python-3.x

我一直在尝试编写一些代码来调整我的国际象棋程序中的变量,我发现这段代码没有按照我的期望去做。

import random

# Knight value, bishop value, rook value, queen value
values = [300, 300, 500, 900]

e1vals = values
e2vals = values    

# Add a gaussian distributed random number to it
deltas = []
for i in range(0, len(values)):
    x = random.gauss(0, 20)
    deltas.append(x)

for i in range(0, len(values)):
    e1vals[i] = values[i] + deltas[i]
    e2vals[i] = values[i] - deltas[i]

print(e1vals)
print(e2vals)

直观地说,这里的代码应该简单地将增量中的值加到或减去e1vals和e2vals,但是除了将值转换为float之外,它不会做任何改变。

如果这有任何区别,我正在使用Python 3.5.1。

1 个答案:

答案 0 :(得分:1)

问题在于e1valuese2values是指相同的列表。因此,您的所有代码都会为列表中的每个项目添加一个值,然后再次减去它,为您留下原始值。