Python 3.x 在python3中为变量赋值,只有最后一组被赋值给所有变量
我试着给每个变量分配一组具有适当长度的单词的值。如果我把它打印出来,单个步骤看起来很好,但是当我试着看里面是什么时,我得到了最后一套Python 3.x 在python3中为变量赋值,只有最后一组被赋值给所有变量,python-3.x,artificial-intelligence,cs50,Python 3.x,Artificial Intelligence,Cs50,我试着给每个变量分配一组具有适当长度的单词的值。如果我把它打印出来,单个步骤看起来很好,但是当我试着看里面是什么时,我得到了最后一套 to_add = set() for x in self.domains: to_add.clear() # clear set for next search for word in self.domains[x]: if len(word) == (x.length): to_add.
to_add = set()
for x in self.domains:
to_add.clear() # clear set for next search
for word in self.domains[x]:
if len(word) == (x.length):
to_add.add(word)
self.domains[x] = to_add
for variable in self.crossword.variables:
if variable == x:
self.crossword.values = self.domains[x]
variable = to_add
print ("")
print ("***************")
print (x)
print (self.crossword.values)
print (variable)
print ("***************")
print("-----------------")
print (self.domains)
print("-----------------")
作为我得到的错误示例(我得到六个变量中的每一个都有相同的值,即使它们不相同):
有人能告诉我如何解决这个问题吗
感谢您重复添加和清除同一组
self.domains[x]=to_add
不会将副本添加到domains
,因此每次修改to_add
,您也会修改已添加到域的内容,因为它们都是相同的集合
最简单的解决方案是创建一个新的来添加集,每次迭代一次:
for x in self.domains:
# Create a new set each time instead of clearing the old one
to_add = set()
for word in self.domains[x]:
. . .
for x in self.domains:
# Create a new set each time instead of clearing the old one
to_add = set()
for word in self.domains[x]:
. . .