1

私はPythonに少し慣れていないので、変数GTRedが指定された場所で上書きされる理由を理解できません。私の理解では、GTRed はその時点で手を付けないでおくべきです。「for x,y in xygrid:」のようなものを使用してネストされた for ループの数を減らすことができることは承知していますが、これには影響しません。

本当にありがとうございました。

敬具

GTN = 0
GTRed = [[0 for j in range(5)] for i in range(4)]
GTYH = [[0 for j in range(5)] for i in range(4)]
for jred in range(4):
    for ired in range(3):
        GTRed = [[0 for j in range(5)] for i in range(4)]
        GTRed[ired][jred]=11
        GTRed[ired+1][jred]=1
        GTRed[ired][jred+1]=1
        GTRed[ired+1][jred+1]=1
        for jyh in range(4):
            for iyh in range(2):
                GTYH = GTRed
                if GTYH[iyh][jyh]==0 and GTYH[iyh+1][jyh]==0:
                    print GTRed
                    GTYH[iyh][jyh]=22 
                                        # The above line seems to somehow  affect GTRed
                    print GTRed
                    GTYH[iyh+1][jyh]=2
                    GameTable[GTN] = GTYH
                    GTN = GTN + 1
4

2 に答える 2

3

問題はラインにあります

GTYH = GTRed

これら 2 つの変数は、リストの同じリストを指します。

a = [0,1,2]
b = a
b[1] = 100
print a # prints [0, 100, 2]

解決策(リストのリストの場合)は次のようになります

GTYH = [x[:] for x in GTRed]

また

import copy

GTYH = copy.deepcopy(GTRed)
于 2012-12-27T12:48:52.450 に答える