【问题标题】:Changing element in a 2D list changes elements in whole column更改 2D 列表中的元素会更改整列中的元素
【发布时间】:2020-07-14 05:48:01
【问题描述】:

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

我解决这个问题的方法是,如果我们在棋盘上从顶部开始为国王留下 k 个空方格,然后用障碍物填充剩余的方格,那么国王只能移动 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.x multidimensional-array


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2019-05-10
      • 1970-01-01
      • 1970-01-01
      • 2014-01-03
      • 2018-05-27
      • 2013-09-27
      • 2020-10-10
      相关资源
      最近更新 更多