首页 > 解决方案 > 更改 2D 列表中的元素会更改整列中的元素

问题描述

我最近参加了一个有竞争力的编程竞赛,但被一个问题卡住了。问题是艾达·金。[问题链接] [1]:https ://www.codechef.com/JULY20B/problems/ADAKING

我解决这个问题的方法是,如果我们从顶部开始在棋盘上为国王留下 ak 个空方格,然后用障碍物填充剩余的方格,那么国王只能移动 k 个单元格。逻辑结果是正确的,但是在我编写的代码中,我无法将第一行的第一个方格更改为包含代表国王的“O”,程序有时将第一列的所有元素都更改为“O”或前两个。同样的故事与'。用于表示空方格。有人可以看看我的代码并提出任何更正

x=['X' for __ in range(8)]
dot=['.' for ___ in range(8)]
t=int(input())
for _ in range(t):
    arr=[]
    for i in range(8):
        arr+=[x]
    k=int(input())
    row=k//8
    extra=k%8
    for i in range(row):
        arr[i]=dot
    for j in range(extra):
        arr[row][j]='.'
    arr[0][0]='O'
    for i in arr:
        print(*i)

标签: python-3.xmultidimensional-array

解决方案


您遇到了list mutability的问题。解决问题的一种方法是使用 复制列表[:]arr+=[x[:]]所以用and替换这两行arr[i]=dot[:]


推荐阅读