python - 如何修改这个 python for 循环?

标签 python loops for-loop

我在 python 中的 for 循环中有奇怪的行为。问题不完全是这个问题,但非常类似于:

a = []
b = [1,2,3,4]
for i in xrange (0,10):
     a.append(b)
     b[3] += 1

结果是:

a = [[1,2,3,14],[1,2,3,14],[1,2,3,14],[1,2,3,14],[1,2,3,14],[1,2,3,14],[1,2,3,14],[1,2,3,14],[1,2,3,14],[1,2,3,14]]

我期待的结果是

a =  [[1,2,3,4],[1,2,3,5],[1,2,3,6],[1,2,3,7],.....,[1,2,3,14]]

我不知道为什么在每次迭代时,b[3] 被添加到 14 然后列表 [1,2,3,14] 被添加到 a。我认为 b[3] 应该在每次迭代时只增加 1

最佳答案

您的问题是每次迭代您都将引用附加到同一个数组,并不断更改它。

最简单的修复是将附加更改为

 a.append(list(b))

这将使每次迭代都将(浅)副本附加到目标数组,而不是引用。

关于python - 如何修改这个 python for 循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11118295/

相关文章:

python - 如何反向循环?

javascript - 将字符串数组转换为数字

python - 最小化温度向量中每个 T 值的多变量函数

python - 如何在 DataFrame 中执行 If 和 Else If 语句?

python - 在 sns histplot 上设置顺序

python - 根据列表查找 pandas 列子集中任何匹配值的更快方法

python - 按排序顺序通过键遍历 Python 字典

python - 如何避免在这个特定的 python 代码片段中使用循环?

javascript - 如何按类查找元素数并在悬停时计算?

Java 字符串索引超出范围