我有一个列表列表,我想在迭代时更新每个列表。 我按如下方式初始化了我的列表:
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]]。我做错了什么?
最佳答案
列表乘法运算符*
不会创建副本,而是创建对同一数据的多个引用。考虑使用推导式来初始化列表,而不是使用 *
:
my_list = [[0 for i in range(n)] for j in range(n)]
关于python - 在迭代时更新列表列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36214376/