好的,这只是我尝试进行Guess Who(TM)进行课堂挑战时编写的一小段代码,我想制作一个随机字符生成器函数(它仅是概念证明,我将对其进行扩展)以后再复杂!请不要判断!)。但是,角色的模板功能列表似乎在每次迭代时都附加了(因此使我的其他循环倾斜)。它应该在每个新生成的列表的末尾添加一个项目-而不是模板。但是模板变量未附加在代码中,仅/应该是临时副本。这是代码:
tempfeatures = characters = []
for i in range(len(characternames)):
tempfeatures = []
charactername = characternames[random.randint(0,len(characternames)-1)]
characternames.remove(charactername)
a = features
tempfeatures = a
### "Debug bit" ###
print(features)
print("loooooop")
for y in range(len(features)):
print(len(features))
temp = random.randint(0,1)
if temp == 1:
tempfeatures[y][1] = True
else:
tempfeatures[y][1] = False
tempfeatures.append(["Dead",True])
characters.append([charactername,tempfeatures])
print(characters)
谢谢!
答案 0 :(得分:0)
显然,温度特征变量是“按引用调用”而不是“按值调用”。 -谢谢python。
因此,在复制列表时,必须在变量名的末尾使用它
identity.AddClaim(new Claim(OpenIdConnectConstants.Claims.Subject, user.Username));
( [:] 位)
感谢您的评论!
答案 1 :(得分:0)
这称为 shallow 副本,它只是将列表引用到另一个变量,如下所示:
https://docs.python.org/2/library/copy.html
您需要按如下方式制作独立副本或深副本:tempfeature = list(feature)
,因此更改tempfeature
不会干扰feature