リストのシャローコピーを作成しようとしていますが、このリストはオブジェクトの属性に格納されています。私の浅いコピーはそれdoesntの仕事関数であるにもかかわらず、私はここでリストの浅いコピーを作成するPythonは、オブジェクト属性では機能しませんか?
copy.copy
temp = list(actuallist)
temp = actuallist[:]
これは一部ところである。これは、オブジェクト
class Game:
tiles = []
daleks = []
rawtile = ""
height = 20
width = 20
tilesize = 32
gamemap = "default"
status = 0
doctor = ""
screen = ""
clock = pygame.time.Clock()
def __init__(self,height,width,tilesize,gamemap):
self.height = height
self.width = width
self.tilesize = 32
self.gamemap = gamemap
self.status = 0
size = (tilesize*width, tilesize*height)
self.screen = pygame.display.set_mode(size)
pygame.display.set_caption("Doctor Who vs Daleks")
def teleportDoctorIn(self,classname):
self.doctor = classname
def releaseDalek(self,x):
self.daleks.append(x)
def resetDaleks(self):
daleks = []
である私の現在のコード
の一部を関連されてみました私は、Li)、浅いリストを作成し、
def updateMap(x,y):
temp = game.tiles[:]
"""SET DOCTOR COORDS"""
temp[game.doctor.xpos][game.doctor.ypos] = "X"
game.doctor.move(x,y)
temp[game.doctor.xpos][game.doctor.ypos] = "D"
"""LETS MOVE DALEKS"""
iは(copy.deepcopyするために必要なが判明し、それを変更しますst。
を何が起こるかを見ることができます*それは*仕事をdoesntの上手の込んだしてください。どのように動作しませんか?間違いましたか?予想外の結果ですか?何もない? – Reti43
問題の性質を示すために必要でないすべてのコードをコードから削除してください。質問のタイトルはとてもシンプルですが、質問はなぜそんなに長いのですか? [最小限の例](http://stackoverflow.com/help/mcve)の作成方法をお読みください。 – timgeb
'temp [game.doctor.xpos] [game.doctor.ypos] =" X "' - 浅いコピーはあなたに新しいリストを与えましたが、メンバー自身をコピーしませんでした。 'temp [game.doctor.xpos]'のオブジェクトは、 'game.tiles [game.doctor.xpos]'と同じオブジェクトです。あなたの意図が何であるか分かりませんが、おそらく 'copy.deepcopy'があなたが望むものです。 – tdelaney