我可以执行
a = [1,2,3]
b = [4,5,6]
a.extend(b)
# a is now [1,2,3,4,5,6]
是否可以执行扩展列表并将新项目添加到列表开头的操作?
喜欢这个
a = [1,2,3]
b = [4,5,6]
a.someaction(b)
# a is now [4,5,6,1,2,3]
我使用版本2.7.5,如果它很重要。
答案 0 :(得分:70)
您可以指定切片:
a[:0] = b
演示:
>>> a = [1,2,3]
>>> b = [4,5,6]
>>> a[:0] = b
>>> a
[4, 5, 6, 1, 2, 3]
基本上,list.extend()
是对list[len(list):]
切片的赋值。
您可以在任意位置“插入”另一个列表,只需在该位置找到空切片:
>>> a = [1,2,3]
>>> b = [4,5,6]
>>> a[1:1] = b
>>> a
[1, 4, 5, 6, 2, 3]
答案 1 :(得分:14)
这就是你所需要的; - )
a = b + a
答案 2 :(得分:4)
您可以使用collections.deque
:
import collections
a = collections.deque([1, 2, 3])
b = [4, 5, 6]
a.extendleft(b[::-1])
答案 3 :(得分:2)
如果您需要快速操作和,您需要能够访问任意元素,请尝试使用treap或红黑树。
>>> import treap as treap_mod
>>> treap = treap_mod.treap()
>>> for i in range(100000):
... treap[i] = i
...
>>> treap[treap.find_min() - 1] = -1
>>> treap[100]
100
treaps和red-black trees上的大多数操作都可以在O(log(n))中完成。据称Treaps平均速度更快,但红黑树的运行时间变化较小。