【问题标题】:why does the input in the array overwrites the values of each row [duplicate]为什么数组中的输入会覆盖每一行的值[重复]
【发布时间】:2017-04-30 07:45:58
【问题描述】:

我有这段代码

x=3
a=x*[x*[0]]
for i in range(0,x):
   for j in range(0,x):
       dt=int(input("insert data: "))
       a[i][j]=dt
       print(a)

它应该只是在被询问时添加数字,但由于某种原因它会填充所有行中的数字

【问题讨论】:

    标签: python multidimensional-array


    【解决方案1】:

    您刚刚创建了 3 行与 a=x*[x*[0]] 相同的引用。 x*[0] 构建一次,并通过外部乘法运算符传播到所有行。

    更改一行会更改所有行。请注意,它可能很有用(但显然不是)

    改为这样做(使用列表推导):

    a=[x*[0] for _ in range(x)]
    

    所以每一行的引用都是分开的

    【讨论】:

    • python对象引用的乐趣。
    • 我必须承认我前段时间也被抓了:)
    • 是的 - 显然,它今天仍然吸引我;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-29
    • 2020-04-04
    • 2014-10-02
    • 2021-10-29
    • 1970-01-01
    • 1970-01-01
    • 2014-10-29
    相关资源
    最近更新 更多