Python 将一个列表附加到一个分配给变量的列表中,可以多次输出该变量的相同最终版本

Python 将一个列表附加到一个分配给变量的列表中,可以多次输出该变量的相同最终版本,python,list,variables,append,Python,List,Variables,Append,对于“皇后问题”(将8个皇后放在棋盘上,这样它们就不会互相攻击),我编写了一个程序,以列表的形式显示所有可能的解决方案。该列表有8个位置,每个位置代表棋盘的x坐标。代码运行良好,但最后我想列出另一个列表,包含所有列表以及可能的问题解决方案。问题出现了:解决方案列表只多次显示最终解决方案。我认为这是因为列表接受变量(这里是b)并附加它,然后当我打印它时,它只打印b的最终解决方案,因为它已经改变了。我怎样才能解决这个问题 我添加了显示常规设置的部分代码: b是一个包含8个元素的列表,代表棋盘。 so

对于“皇后问题”(将8个皇后放在棋盘上,这样它们就不会互相攻击),我编写了一个程序,以列表的形式显示所有可能的解决方案。该列表有8个位置,每个位置代表棋盘的x坐标。代码运行良好,但最后我想列出另一个列表,包含所有列表以及可能的问题解决方案。问题出现了:解决方案列表只多次显示最终解决方案。我认为这是因为列表接受变量(这里是b)并附加它,然后当我打印它时,它只打印b的最终解决方案,因为它已经改变了。我怎样才能解决这个问题

我添加了显示常规设置的部分代码: b是一个包含8个元素的列表,代表棋盘。 sol应该是包含所有可能解决方案的列表

for b[0] in r8:
    for b[1] in r8:
        if check(1) == True and checkdi(1) == True:
            for b[2] in r8:
                if check(2) == True and checkdi(2) == True:
                    for b[3] in r8:
                        if check(3) == True and checkdi(3) == True:
                            for b[4] in r8:
                                if check(4) == True and checkdi(4) == True:
                                    for b[5] in r8:
                                        if check(5) == True and checkdi(5) == True:
                                            for b[6] in r8:
                                                if check(6) == True and checkdi(6) == True:
                                                    for b[7] in r8:
                                                        if check(7) == True and checkdi(7) == True:
                                                            sol.append(b)
                                                            print(sol)
                                                            print(b)
它用print(b)打印的解决方案都很好,所以代码工作得很好,我只需要帮助创建所有可能解决方案的列表

for b[0] in r8:
    for b[1] in r8:
        if check(1) == True and checkdi(1) == True:
            for b[2] in r8:
                if check(2) == True and checkdi(2) == True:
                    for b[3] in r8:
                        if check(3) == True and checkdi(3) == True:
                            for b[4] in r8:
                                if check(4) == True and checkdi(4) == True:
                                    for b[5] in r8:
                                        if check(5) == True and checkdi(5) == True:
                                            for b[6] in r8:
                                                if check(6) == True and checkdi(6) == True:
                                                    for b[7] in r8:
                                                        if check(7) == True and checkdi(7) == True:
                                                            sol.append(b)
                                                            print(sol)
                                                            print(b)
这是我在这里的第一篇帖子,如果我在帖子中有什么可以做得更好的地方,请也告诉我。

您可以尝试使用

import copy
sol.append(copy.deepcopy(b))

也许只需打印出完成循环的sol。在这里,我假设您在循环之前将sol初始化为
sol=[]

您认为b[0]etc的
会做什么?