Python 在迭代时更新列表列表

Python 在迭代时更新列表列表,python,Python,我有一个列表,我想在迭代时更新每个列表。 我初始化了我的列表,如下所示: my_list = [[0]*n]*n 当我想更新内部列表时,通过以下方式: for i in range(something): for j in range(anotherthing): my_list[i][j] = something 发生的情况是,整个列表在每次迭代时都会更新,而不是只更新第i个列表,例如[1,2],[1,2]]。 我想要的是,在第一次迭代中,当我初始化它时,它是[[1

我有一个列表,我想在迭代时更新每个列表。 我初始化了我的列表,如下所示:

my_list = [[0]*n]*n
当我想更新内部列表时,通过以下方式:

for i in range(something):
    for j in range(anotherthing):
        my_list[i][j] = something
发生的情况是,整个列表在每次迭代时都会更新,而不是只更新第i个列表,例如[1,2],[1,2]]。
我想要的是,在第一次迭代中,当我初始化它时,它是[[1,2],[0,0]],在第一次迭代中,它是[[1,2],[values]]。我做错了什么?

列表乘法运算符
*
不创建副本,而是创建对同一数据的多个引用。而不是使用<代码> */COD>考虑使用理解来初始化列表:

my_list = [[0 for i in range(n)] for j in range(n)]

使用此选项初始化列表,它将正常工作

x = [[0]*n for i in range(n)]
原始代码也创建了一个子列表,但每个子列表都引用同一个对象

注意:我使用的是Python3。如果您使用的是2,则可能需要使用xrange()而不是range()