列表作为栈使用
列表提供的方法,让我们很方便的实现后进先出的具有栈特性的操作。要添加一个元素到堆栈的顶端,使用 append()
。要从堆栈顶部取出一个元素,使用 pop()
,不用指定索引
In [9]: stack = [3,4,5,6]
In [10]: stack.append(7)
In [11]: stack
Out[11]: [3, 4, 5, 6, 7]
In [12]: stack.pop()
Out[12]: 7
In [13]: stack
Out[13]: [3, 4, 5, 6]
列表作为队列使用
队列的特性是后进后出,一端入队另一端出队,使用 append
队尾添加元素,使用 pop(0)
对首元素出队
In [14]: queue = [5,6,7]
In [15]: queue.append(8)
In [16]: queue
Out[16]: [5, 6, 7, 8]
In [17]: queue.pop(0)
Out[17]: 5
In [18]: queue
Out[18]: [6, 7, 8]
但是这种实现方式是比较低效的,pop 的操作时间复杂度是 O(N)的,因为每次队首元素出队后,其他位置的元素都要向前移动一位.
python 中提供了更加高效的队列实现,deque,他是一个双向队列对象,也就是说两端都可以入队和出队,而且时间复杂度都是 O(1).
In [19]: from collections import deque
In [20]: d = deque((4,6,7,8))
In [21]: d
Out[21]: deque([4, 6, 7, 8])
In [22]: d.append(9)
In [23]: d.popleft()
Out[23]: 4
In [24]: d
Out[24]: deque([6, 7, 8, 9])
删除列表某个切片
在列表中删除某个切片内的元素一般有两种场景,
- 将指定的切片赋值为空列表
In [25]: a = [3,4,5,6,7]
In [26]: a[2:4] = []
In [27]: a
Out[27]: [3, 4, 7]
- 使用 del 语句
In [30]: b = [5,6,7,8,9,0]
In [31]: del b[2:5]
In [32]: b
Out[32]: [5, 6, 0]
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于