【问题标题】:Insert an array in an array using loop使用循环在数组中插入数组
【发布时间】:2016-11-28 15:04:23
【问题描述】:

我编写以下代码来创建一个类似[[1,2,3],[2,2,3],[3,2,3]] 的数组,

def f(X):
    X[0]=X[0]+1
    return X
L=[]
X=[1,2,3]
for i in range(0,3):
    L=L+[X]
    X=f(X)
print(L)

但它正在打印[[4, 2, 3], [4, 2, 3], [4, 2, 3]]。为什么会发生这种情况以及如何使用函数 'f' 解决这个问题?

谢谢

【问题讨论】:

  • 寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请参阅:How to create a Minimal, Complete, and Verifiable example
  • 发生的事情很明显,只需在 f() 中使用 X 的副本即可解决。
  • 顺便说一句,你也可以L = [[x,2,3] for x in [1,2,3]]
  • 您将引用传递给同一个对象所有 3 次。因此,当您更改列表时,它会在您使用此参考的任何地方发生变化。
  • 不能用'f'函数解决吗? @barak manos

标签: python arrays list function for-loop


【解决方案1】:

如果你必须使用你的函数f,那么尝试如下:

l = []
x = [1, 2, 3]

def f(x):
    x[0] = x[0] + 1
    return x

for i in range(3):
    l.append(x[:])
    x = f(x)

输出:

>>> l
[[1, 2, 3], [2, 2, 3], [3, 2, 3]]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-17
    • 2015-05-11
    • 2018-08-24
    • 2021-03-21
    • 2020-01-28
    • 2021-05-25
    • 1970-01-01
    相关资源
    最近更新 更多