转载

Python3 官方文档翻译 - 5 数据结构

list. copy ( )

返回list的一个影子拷贝(浅拷贝),相当于 a[:]

用一个例子来说明list的大多数用法

>>> a = [66.25, 333, 333, 1, 1234.5] >>> print(a.count(333), a.count(66.25), a.count('x')) 2 1 0 >>> a.insert(2, -1) >>> a.append(333) >>> a [66.25, 333, -1, 333, 1, 1234.5, 333] >>> a.index(333) 1 >>> a.remove(333) >>> a [66.25, -1, 333, 1, 1234.5, 333] >>> a.reverse() >>> a [333, 1234.5, 1, 333, -1, 66.25] >>> a.sort() >>> a [-1, 1, 66.25, 333, 333, 1234.5] >>> a.pop() 1234.5 >>> a [-1, 1, 66.25, 333, 333]  list的用法

你可能会注意到像insert、remove或sort这样的方法只修改了List而没有返回值——其实他们都返回了空值None。这是Python中对所有可变数据结构的一个设计原则

5.1.1 像Stacks那样使用Lists

List的方法让它很容易像Stack那样被使用,最后一个加入的元素第一个被删除("后进先出"原则 )。使用append() 来添加一个元素至栈顶,使用不给定下标的pop() 将一个元素从栈顶移除,示例:

>>> stack = [3, 4, 5] >>> stack.append(6) >>> stack.append(7) >>> stack [3, 4, 5, 6, 7] >>> stack.pop() 7 >>> stack [3, 4, 5, 6] >>> stack.pop() 6 >>> stack.pop() 5 >>> stack [3, 4]

5.1.2 像Queues那样使用Lists

同样的,List的方法也使它很容易像queue那样被使用,第一个加入的元素第一个被删除("先进先出"原则)。但是,List在这种用法下并不高效。尽管从List末尾添加或是删除元素是很快的,但从List起始位置插入或弹出元素却是慢的(因为需要所有其他的元素依次移动一个位置)

因此,推荐使用 collections.deque 来实现 queue,它被设计成从两端都可以快速地添加和移除元素。

>>> from collections import deque >>> queue = deque(["Eric", "John", "Michael"]) >>> queue.append("Terry")           # Terry arrives >>> queue.append("Graham")          # Graham arrives >>> queue.popleft()                 # The first to arrive now leaves 'Eric' >>> queue.popleft()                 # The second to arrive now leaves 'John' >>> queue                           # Remaining queue in order of arrival deque(['Michael', 'Terry', 'Graham'])
正文到此结束
Loading...