【问题标题】:Iterating through multidemensional list, result not making sense [duplicate]遍历多维列表,结果没有意义[重复]
【发布时间】:2017-11-09 03:57:59
【问题描述】:

有人可以向我解释为什么这段代码(python 2.7):

k=0
img = [[0]*4]*5
for i in xrange(len(img)):
    for j in xrange(len(img[0])):
        k+=1
        img[i][j] = k
print(img)

结果:

[[17, 18, 19, 20], 
 [17, 18, 19, 20],
 [17, 18, 19, 20],
 [17, 18, 19, 20],
 [17, 18, 19, 20]]

而不是这个:

[[1, 2, 3, 4], 
 [5, 6, 7, 8],
 [9, 10, 11, 12],
 [13, 14, 15, 16],
 [17, 18, 19, 20]]

我不确定我错过了什么...?

【问题讨论】:

    标签: python python-2.7 for-loop multidimensional-array


    【解决方案1】:

    这里是这一行:img = [[0]*4]*5

    基本上,您是在创建对数组的引用,而不是创建新的引用(对于第二维)。这就解释了为什么最后一行是自始至终重复的那一行,因为它是要迭代的最后一行。

    【讨论】:

    • 不太关注,抱歉。你能解释一下“创建参考”吗?
    • 问题不在于编辑,而在于初始化。您需要使用 img = [[0 for i in range(4)] for j in range(5)],它会创建您所期望的内容。
    猜你喜欢
    • 2016-11-04
    • 2021-12-17
    • 2014-11-17
    • 2020-05-30
    • 1970-01-01
    • 2012-08-22
    • 2015-12-07
    • 2019-11-24
    • 2014-07-06
    相关资源
    最近更新 更多