Chapter 1
This commit is contained in:
@@ -145,4 +145,4 @@ Python 的星号表达式可以用来解决这个问题。比如,你在学习
|
||||
>>>
|
||||
|
||||
然后,由于语言层面的限制,递归并不是 Python 擅长的。
|
||||
因此,最后那个递归演示仅仅是个好奇的探索罢了,对这个不要太认真了。
|
||||
因此,最后那个递归演示仅仅是个好奇的探索罢了,别太较真。
|
||||
|
||||
@@ -86,4 +86,4 @@
|
||||
>>> q.popleft()
|
||||
4
|
||||
|
||||
在队列两端插入或删除元素时间复杂度都是 ``O(1)`` ,区别于列表,在列表的开头插入或删除元素的时间复杂度为 ``O(N)`` 。
|
||||
在队列两端插入或删除元素的时间复杂度都是 ``O(1)`` 。列表则不同,在列表的开头插入或删除元素的时间复杂度是 ``O(N)`` 。
|
||||
|
||||
@@ -72,6 +72,6 @@ heapq 模块有两个函数:``nlargest()`` 和 ``nsmallest()`` 可以完美解
|
||||
需要在正确场合使用函数 ``nlargest()`` 和 ``nsmallest()`` 才能发挥它们的优势
|
||||
(如果 N 快接近集合大小了,那么使用排序操作会更好些)。
|
||||
|
||||
尽管你没有必要一定使用这里的方法,但是堆数据结构的实现是一个很有趣并且值得你深入学习的东西。
|
||||
尽管你没有必要一定使用这里的方法,但是堆数据结构的实现很有趣,值得深入学习。
|
||||
基本上只要是数据结构和算法书籍里面都会有提及到。
|
||||
``heapq`` 模块的官方文档里面也详细的介绍了堆数据结构底层的实现细节。
|
||||
|
||||
@@ -89,7 +89,7 @@
|
||||
这样的话你就能通过一条简单的语句就能很轻松的实现在字典上的求最值和排序操作了。
|
||||
|
||||
需要注意的是在计算操作中使用到了 (值,键) 对。当多个实体拥有相同的值的时候,键会决定返回结果。
|
||||
比如,在执行 ``min()`` 和 ``max()`` 操作的时候,如果恰巧最小或最大值有重复的,那么拥有最小或最大键的实体会返回:
|
||||
比如,在执行 ``min()`` 和 ``max()`` 操作的时候,如果恰巧最小或最大值有重复的,则返回拥有最小或最大键的实体:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
|
||||
@@ -59,5 +59,5 @@
|
||||
这个对象同样也支持集合操作,并且可以被用来查找两个字典有哪些相同的键值对。
|
||||
|
||||
尽管字典的 ``values()`` 方法也是类似,但是它并不支持这里介绍的集合操作。
|
||||
某种程度上是因为值视图不能保证所有的值互不相同,这样会导致某些集合操作出现问题。
|
||||
不过,如果你硬要在值上面执行这些集合操作的话,你可以先将值集合转换成 set,然后再执行集合运算就行了。
|
||||
某种程度上是因为值视图并不能保证所有的值互不相同,这样会导致某些集合操作出现问题。
|
||||
不过,如果你硬要在值上面执行这些集合操作的话,可以先将值集合转换成 set,然后再执行集合运算。
|
||||
|
||||
Reference in New Issue
Block a user