0

属性の 1 つとしてリストを持つクラスがあります。

class Hello(object):
    stuff
    self.List = [True, False, True False]

そのリストのコピーをタプルに渡したいので、リストの以前のコピーを参照しながらリストを変更できます。私は次のことを行います:

def getStartState(self):
    copiedList = copy.deepcopy(self.cornerList)
    fullState = (self.startingPosition[0], self.startingPosition[1], tuple(copiedList))
    return fullState

copy がグローバル変数ではないというエラーが表示されます。何か不足していますか?

4

1 に答える 1

1

ここにはいくつかの問題があると思います。

copyまず、モジュールをインポートしていないため、エラーが発生する可能性があります。それは簡単な修正です。ファイルimport copyの一番上にあります。

deepcopy2 番目の問題は、s のような不変オブジェクトのリストが必要ないことboolです。リストのメンバーはその場で変更できないため、copy.copy(List)list(List)またはのどれでもList[:]問題なく動作します。ディープ コピーは、ネストされた可変構造がある場合にのみ必要です。

最後に、コピーからタプルを作成するためだけにリストをコピーする必要はありません。タプルは不変であり、ソース シーケンスを変更しないため、getStartStateメソッドをより単純にすることができます。

def getStartState(self):
    return (self.startingPosition[0], self.startingPosition[1],
            tuple(self.cornerList))
于 2012-10-15T23:41:35.170 に答える