2021.8.13近日小结
最近在看leetcode‘队列-栈’相关
1.广度优先搜索BFS的实现方法之一—队列
2.最短路径求解-BFS
python
1.collection是模块中的deque双向队列性能比list自建队列性能好
2.列表 a ----b =a 实际为引用,浅拷贝考虑b = a[:]
3.set集合和dict字典实际是哈希表,搜索性能远大于list
为什么?
通过对键的哈希处理,使得其直接储存在相应物理位置
例如字典的key = 66,哈希后得88,那就直接储存在88的单元上,搜索也是直 接哈希运算,实际复杂度O(1),而列表的搜索为偏移搜索,复杂度O(n)
4.循环变量尽量不改变
5.元组中存在列表例如([1,2,3],1),其中,列表[1,2,3]可以改变(方法),而该类元组不能作为集合和字典的键
>>> a = [1,2,3]
>>> b = (a,1)
>>> b
([1, 2, 3], 1)
>>> a.pop()
3
>>> b
([1, 2], 1)
>>> s = set()
>>> d = {}
>>> s.add(b)
Traceback (most recent call last):
File "<pyshell#7>", line 1, in <module>
s.add(b)
TypeError: unhashable type: 'list'
>>> d[b] = 1
Traceback (most recent call last):
File "<pyshell#8>", line 1, in <module>
d[b] = 1
TypeError: unhashable type: 'list'