返回词典时,python是否像JavaScript一样?

时间:2016-04-27 06:13:03

标签: javascript python

我在想:

def get_empty_cell():
    return {'p': [[], []], 'h': {}, 'b': []}

def create_new_board(old_board):
    height = len(old_board) + 4
    width = len(old_board[0]) + 4
    self.board = [None] * height
    for i in range(0, height):
        self.board[i] = [None] * width
        for j in range(0, width):
            # (!) deepcopy() 
            self.board[i][j] = copy.deepcopy(self.get_empty_cell())

我使用深度复制,因为我有很多不同变量访问相同内容的情况。但是,当Python返回" new"像我的代码中的字典,如果我想要不同的单元格,还是像JavaScript一样,我是否需要使用copy.deepcopy

(关于主题:我确定我的代码可以优化" Python方式" ...)

2 个答案:

答案 0 :(得分:2)

get_empty_cell()每次都会从文字中返回一个新字典。没有必要再次复制它。

答案 1 :(得分:2)

与其他答案一样,您无需复制,因为get_empty_cell()每次调用时都会返回一个新的dict

是的!您可以像这样优化代码:

self.board = [[self.get_empty_cell() for j in range(width)] for i in range(height)]