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,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/

相关文章:

python - 有没有办法在 python 中更改用户的输入?

python - 分割验证码图像中的字母

python - 将每个字节与 0x71 异或

python - 如果可能的话,如何获得获取数组的 2 个元素所需的迭代次数?

javascript - Python Selenium 在动态网页上选择复选框

python - 使用 for 循环填充时不显示 matplotlib 散点图

python - 如何为 Sphinx 自定义模块名称

python - 运行 Flask 命令时未找到错误解释器文件错误

python - 未知的数据库错误python mysql

python - 在 Django 中有效地获取相关模型的数量