Python编程中防止字典、矩阵、队列的元素被更新

Python编程中防止字典、矩阵、队列的元素被更新,第1张

Python编程中防止字典矩阵队列的元素被更新

一 说明:

在做DFS题目时,本人经常使用dict、list和queue;然而,在进行程序递归时,这些变量一经修改,则无法复原。因此,尝试通过将其赋值给新变量,从而避免产生上述问题。

二 解决方案:

2.1 对于字典,在给新字典的键值赋值时,使用“[::]”符号获得原字典相应键的值(这里的值是list类型):

# ## 0 传递字典数据;用来更新障碍周围所需的灯数
        new_barrier_dict = {}
        for keyi in barrier_dict.keys():
            new_barrier_dict[keyi] = barrier_dict[keyi][::]
            # new_barrier_dict[keyi] = barrier_dict[keyi] # 不要写成这样,否则新旧字典均被更新

2.2 对于矩阵而言,逐点获得矩阵元素,然后重新赋值给新队列:

# 填充所在行和所在列的元素
        new_Data = []
        for rr in range(len(Data)):
            temp = []
            for cc in range(len(Data[0])):
                temp.append(Data[rr][cc])
            new_Data.append(temp)
# new_Data = Data # 不要这样写,否则新旧矩阵均实时更新

2.3 对于队列而言,为新队列首先添加一个元素,然后再将原队列的元素添加到新队列中:

## 0.1 存储当前该灯的位置
        lamp_str = str(ni_rr) + ';' + str(ni_cc);
        if lamp_str not in self.stop_keys:
            new_lamps.append(lamp_str) ## 首先加入一个新元素
        else:
            return False,0
        for lap in lamps:  # 继承原来的灯
            if lap not in self.stop_keys:
                new_lamps.append(lap) ## 然后再逐个加入
# new_lamps = lamps# 不要这样写,否则新旧队列均实时更新

后记:以上是本人在编程测试时发现的现象及解决办法;未曾深入研究其原理、本质。

如有错误,望指正。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5679787.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存