1.当须要排序的时候,尽可能设法使用内建 Python 列表的 sort 方法;
2.当须要搜索的时候,尽可能设法使用内建的字典。
3.python list.sort()方法:相比于手工构建一个辅助的元组列表,使用 sort 方法的 key=参数更加容易、更节省内存,并且速度也更快。
4.一般使用reduce(),map(),filter()要比使用字典、列表、集合内涵快一些
5.DSU 排序技术能够用于任意数目的主键。只要愿意,能够给元组增长足够多的键,固然它们的顺序得按照你但愿进行的比较顺序进行排列。能够给列表的 sort 方法传递一个可选的命名参数 key,并且它能够被调用,做用于列表中的每一个元素并得到用于排序的键。若是传递这样的一个参数,排序会在内部使用 DSU。
6.list的remove()方法,调用会线性地搜索整个列表以获取要删除的元素。一句话,若是须要 Python 中的伪随机行为,须要的是标准库的 randompopitem 模块。
7.list的sort方法的时间复杂度是O(nlogn)
8.当使用heapq模块时,你调用 heappop 从列表中获取元素时,老是获得当前最小的元素,而后全部节点会被调整,以确保堆特性仍然有效。每次经过 heappush 添加元素,或者经过heappop 删除元素,它们所花费的时间都正比于当前列表长度的对数(O(logN),准确地说)。只须要付出一点点代价(从整体来讲,代价也很是小)。
9.当须要进行优化时,首先进行测量。不该该仅仅根据基本原理选择优化的方式,由于真实的性能数据变化无穷,即便在两个兼容的发行版本之间也会有很大的差别。
10.若是列表 L 已是排序完毕的状态,则 Python 标准库提供的 bisect 模块能够很容易地检查出元素 x 是否在 L 中,也能够很容易的添加元素使其处于新的排序状态,bisect模块采用二分查找方法,查找元素。