浅层与深层复制的区别仅与复合对象(即包含列表或类的实例等其他对象的对象)相关:
-
浅层复制 构造一个新的复合对象,然后(在尽可能的范围内)将原始对象中找到的对象的 引用 插入其中。
-
深层复制 构造一个新的复合对象,然后,递归地将在原始对象里找到的对象的 副本 插入其中。
制作字典的浅层复制可以使用 dict.copy() 方法;
列表的浅层复制可以通过赋值整个列表的切片完成,例如,copied_list = original_list[:]
col, row = 0, 0
visited = [[False] * n] * m
visited[row][col] = True
以上操作,得到visited的每一行第一个元素都是True。
但是如果是下面语句,
visited = [[False] * n for _ in range(m)]
这样定义出来的visited,在第一段代码结束后,只有索引[0][0]的元素是True。
暂时不知道为什么会这样,先记一下。
【栈】
以下是《Python数据结构与算法》的学习笔记,并非原创。
判断括号是否匹配
```python
from collections import deque
def parChecker(symbolString):
s = deque()
balanced = True
index = 0
while index < len(symbolString) and balanced:
symbol = symbolString[index]
if symbol == '(':
s.append(symbol)
else:
s.pop()
index += 1
if balanced and not s:
return True
else:
return False
if __name__ =="__main__":
symbolString = "()"
print(parChecker(symbolString))