首页 > 解决方案 > 新值被复制到整列

问题描述

首先,我认为这不是变量地址复制问题。我有这个代码:

x = [1, 1, 0, 0]
b_u = [[0.2 for _ in range(3)]] * 4
for i in range(4):
    # The problem is on line below. This line copying new value to the whole column.
    b_u[i][0] = (2 * x[i]) / (1 + sum(x))
print(b_u)

您可以在下面的几行中看到发生了什么:

# b_u :
# Before loop : [[0.2, 0.2, 0.2], [0.2, 0.2, 0.2], [0.2, 0.2, 0.2], [0.2, 0.2, 0.2]]
# Expected : [[0.67, 0.2, 0.2], [0.67, 0.2, 0.2], [0, 0.2, 0.2], [0, 0.2, 0.2]]
# After loop : [[0.0, 0.2, 0.2], [0.0, 0.2, 0.2], [0.0, 0.2, 0.2], [0.0, 0.2, 0.2]]

我错在哪里?是错字吗?

标签: pythonlist

解决方案


推荐阅读