【问题标题】:Array rows being filled instead of individual elements数组行被填充而不是单个元素
【发布时间】:2021-03-20 21:05:23
【问题描述】:

数组行被覆盖,所以我得到了整个数组写入的最后一列。 tilegrid[x][y]=n 似乎填满了整行。我称它为一行,但它是每个子数组中的第 N 个被覆盖的项。

tilegrid=[['O']*7]*9
while running>0:
    my = pygetwindow.getWindowsWithTitle('HuniePop 2 - Double Date')
    if my:
        #left, top, right, bot = win32gui.GetWindowRect(my)
        #rect=(my[0].left,my[0].top,my[0].width,my[0].height)
        rect=(my[0].left,my[0].top,my[0].left+my[0].width,my[0].top+my[0].height)
        #print(rect)
        p = PIL.ImageGrab.grab(bbox=rect)
        #p = pyautogui.screenshot(region=rect)
        for y in range(0,7):
            for x in range(0,9):
                extract=p.crop(box=(gx+space*x,gy+space*y,gx+size+space*x,gy+size+space*y))
                #name="all"+str(x)+str(y)+".png"
                #extract.save(name)
                n='O'
                low=999999
                for i in tilelist:
                    out=PIL.ImageChops.difference(extract,i[0])
                    val=ImageStat.Stat(out).sum[0]
                    if val<low:
                        low=val
                        n=i[1]
                tilegrid[x][y]=n
                #print(tilegrid[x][y],end='')
                #print(tilegrid)
                print(n,end='')
            print()
        print()
        for y in range(0,7):
            for x in range(0,9):
                print(tilegrid[x][y],end='')
            print()
        print(tilegrid)
        time.sleep(10)
    else:
        print('Window not found')
        running=running-1
        time.sleep(10)

如果我取消注释 #print(tilegrid) 行,我可以在 x 中的每次迭代期间看到整行都被填满。

CFPFNFSCD
DFFHSCPDX
XDHDFBXSB
NCNNXNHCF
NPNNFHHDH
SHCDSNFSP
SHCDHCBNF

DDDDDDDDD
XXXXXXXXX
BBBBBBBBB
FFFFFFFFF
HHHHHHHHH
PPPPPPPPP
FFFFFFFFF
[['D', 'X', 'B', 'F', 'H', 'P', 'F'], ['D', 'X', 'B', 'F', 'H', 'P', 'F'], ['D', 'X', 'B', 'F', 'H', 'P', 'F'], ['D', 'X', 'B', 'F', 'H', 'P', 'F'], ['D', 'X', 'B', 'F', 'H', 'P', 'F'], ['D', 'X', 'B', 'F', 'H', 'P', 'F'], ['D', 'X', 'B', 'F', 'H', 'P', 'F'], ['D', 'X', 'B', 'F', 'H', 'P', 'F'], ['D', 'X', 'B', 'F', 'H', 'P', 'F']]

【问题讨论】:

    标签: python arrays python-3.x


    【解决方案1】:

    我刚刚看到有人在这里发布了一个相关问题:For loop doesn't append info correctly into 2D array. How do I fix this? (Python)

    您的第一行创建了对同一列表的 9 个引用。 要查看它,只需运行以下命令:

    tilegrid=[['O']*3]*4
    tilegrid[0][0]="a"
    print(tilegrid)
    

    【讨论】:

      猜你喜欢
      • 2019-03-05
      • 1970-01-01
      • 1970-01-01
      • 2014-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-13
      相关资源
      最近更新 更多