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

如何在列表的开头添加一个整数?

[1, 2, 3]  ⟶  [42, 1, 2, 3]
1199077 次浏览
>>> x = 42
>>> xs = [1, 2, 3]
>>> [x] + xs
[42, 1, 2, 3]

注意:不要使用list作为变量名。

>>> x = 42
>>> xs = [1, 2, 3]
>>> xs.insert(0, x)
>>> xs
[42, 1, 2, 3]

它是如何工作的:

list.insert(index, value)

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

另一种做同样的事情的方式,

list[0:0] = [a]

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

列表没有针对前面的修改进行优化,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

可以通过简单地将列表添加到一起来制作新列表。

list1 = ['value1','value2','value3']
list2 = ['value0']
newlist=list2+list1
print(newlist)

这些都不适合我。我将第一个元素转换为系列的一部分(单个元素系列),并将第二个元素也转换为系列,并使用追加函数。

l = ((pd.Series(<first element>)).append(pd.Series(<list of other elements>))).tolist()

基于使用timeit模块的一些(最小)基准测试,以下测试似乎具有类似的性能,如果不是更好的话

new_lst = [a, *lst]

[a] + list一样,这将创建一个新列表而不是突变lst

如果你的意图是改变列表,那么使用lst.insert(0, a)

list_1.insert(0,ur_data)

确保ur_data是字符串类型 所以如果你有data= int(5)转换为ur_data = str(data)

您可以使用Unpack list:

a=5

li=[1,2,3]

li=[a,*li]

=>[五、一、二、三]

备选案文:

>>> from collections import deque


>>> my_list = deque()
>>> my_list.append(1)       # append right
>>> my_list.append(2)       # append right
>>> my_list.append(3)       # append right
>>> my_list.appendleft(100) # append left
>>> my_list


deque([100, 1, 2, 3])


>>> my_list[0]


100

[]:

collections.deque在循环相关文章中比Python纯list更快。