在Python中将整数附加到列表的开头

我有一个整数和一个列表。 我想从variables开始并以列表结尾列出一个新的列表。 写a + list我得到错误。 编译器处理a整数,因此我不能使用append或扩展。 你会怎么做?

 >>> a = 5 >>> li = [1, 2, 3] >>> [a] + li # Don't use 'list' as variable name. [5, 1, 2, 3] 
 >>>var=7 >>>array = [1,2,3,4,5,6] >>>array.insert(0,var) >>>array [7, 1, 2, 3, 4, 5, 6] 

怎么运行的:

array.insert(index, value)

在一个给定的位置插入一个项目。 第一个参数是要插入的元素的索引,所以array.insert(0, x)插入列表的前面, array.insert(len(array), x)等同于array.append(x) 。负值被视为相对于数组的末尾。

请注意,如果您经常尝试执行此操作,尤其是在循环中,则列表是错误的数据结构

列表没有针对前面的修改进行优化, somelist.insert(0, something)是O(n)操作 。

somelist.pop(0)del somelist[0]也是O(n)操作。

要使用的正确数据结构是collections模块的deque 。 deques公开了一个类似于列表的接口,但是针对两个端点的修改进行了优化。 他们有一个appendleft方法在前面插入。

演示:

 In [1]: lst = [0]*1000 In [2]: timeit -n1000 lst.insert(0, 1) 1000 loops, best of 3: 794 ns per loop In [3]: from collections import deque In [4]: deq = deque([0]*1000) In [5]: timeit -n1000 deq.appendleft(1) 1000 loops, best of 3: 73 ns per loop 

另一种做同样的方法,

 list[0:0] = [a]