如何在列表的开头添加一个整数?
[1, 2, 3] ⟶ [42, 1, 2, 3]
>>> x = 42 >>> xs = [1, 2, 3] >>> [x] + xs [42, 1, 2, 3]
注意:不要使用list作为变量名。
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)。负值被视为相对于列表的末尾。
xs.insert(0, x)
xs.insert(len(xs), x)
xs.append(x)
另一种做同样的事情的方式,
list[0:0] = [a]
请注意,如果您经常尝试执行该操作,尤其是在循环中,列表是错误的数据结构。
列表没有针对前面的修改进行优化,somelist.insert(0, something)是O(n)操作。
somelist.insert(0, something)
somelist.pop(0)和del somelist[0]也是O(n)操作。
somelist.pop(0)
del somelist[0]
要使用的正确数据结构是collections模块中的deque。deques公开了一个类似于列表的接口,但针对来自两个端点的修改进行了优化。它们在前面有一个appendleft方法用于插入。
collections
deque
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模块的一些(最小)基准测试,以下测试似乎具有类似的性能,如果不是更好的话
timeit
new_lst = [a, *lst]
与[a] + list一样,这将创建一个新列表而不是突变lst。
[a] + list
lst
如果你的意图是改变列表,那么使用lst.insert(0, a)。
lst.insert(0, a)
list_1.insert(0,ur_data)
确保ur_data是字符串类型 所以如果你有data= int(5)转换为ur_data = str(data)
data= int(5)
ur_data = str(data)
您可以使用Unpack list:
a=5 li=[1,2,3] li=[a,*li] =>[五、一、二、三]
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更快。
collections.deque