Python - 对象列表(带列表属性)

时间:2016-01-13 21:25:45

标签: python list

这是我的“连接4”的一部分。 python中的游戏代码,我尝试使用不同的板设置创建新节点。

class  node(object):
    def __init__(self, depth,board=None):
        if board is None:
            board = []
        self.board = board
        self.depth = depth

我定义了这样的实例:

start = node(2,new_board)

其中new_board是列表[7x6],用点填充。

之后我尝试用这个函数创建子节点:

def child(depth, parent_board = []):
    children = [node(depth,[]) for x in range(7)]
    for x in range(7):
        y = 5
        while(y >= 0 and (parent_board[x,y] == 'O' or parent_board[x,y] == 'X')):
            y = y-1
        parent_board[x,y] = 'O'
        if (depth >=0):
            children[x] = node(depth-1, parent_board)
            children[x].board = parent_board
        parent_board[x,y] = '.'
    return children

父板的修改是正确的,但每当我尝试将它传递给数组中的子节点时,每个子节点都会收到相同的数组。

我知道列表在python中是可变的(这就是为什么我在类__init__函数中使用那个'无事物),但是我不能让每个孩子都有不同的列表。

1 个答案:

答案 0 :(得分:0)

您可以在节点功能中复制列表,例如:

import copy

...

    self.board = copy.copy(board)

详细信息:https://docs.python.org/2/library/copy.html