如何在列表开头加上一个整数?
[1, 2, 3] ⟶ [42, 1, 2, 3]
>>> 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)
。负数索引表示相对于列表末尾的位置。
new_list = [x] + your_list
比 your_list.insert(x)
效率低吗? - Charlie Parker>>> x = 42
>>> xs = [1, 2, 3]
>>> [x] + xs
[42, 1, 2, 3]
注意:不要使用list
作为变量名。
li.insert(0, a)
比li = [a] + li
快大约5倍。如果你需要经常这样做,请记住这一点。 - Marcel Pfeifferli.insert(0, a)
会改变 li
的值。而 li = [a] + li
则会创建一个新的实例并将所有值复制到其中。如果其他对象引用了该列表实例,则这是一个重要的区别。 - unholysamplercollections.deque.appendleft()
应该会更快。 - cowbert请注意,如果您经常尝试执行该操作,尤其是在循环中,列表是错误的数据结构。
列表不适用于在前面进行修改,并且somelist.insert(0, something)
是一个O(n)操作。
somelist.pop(0)
和del somelist[0]
也是O(n)操作。
正确使用的数据结构是来自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
new_list = [x] + your_list
比 your_list.insert(x)
效率低吗? - Charlie Parker另一种做法:
list[0:0] = [a]
您可以使用解包列表:
a = 5
li = [1,2,3]
li = [a, *li]
=> [5, 1, 2, 3]
通过使用timeit
模块进行一些(最小)基准测试,似乎以下内容具有类似或更好的性能,而不是已接受的答案。
new_lst = [a, *lst]
与 [a] + list
一样,这将创建一个新的列表而不是改变 lst
。lst.insert(0, a)
。list_1.insert(0,ur_data)
确保你的数据是字符串类型
所以如果你有 data= int(5)
将其转换为 ur_data = str(data)
>>> 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
更快速 相关帖子。
这些方法对我都不起作用。我将第一个元素转换为序列(一个仅有一个元素的序列),将第二个元素也转换为序列,并使用append函数。
l = ((pd.Series(<first element>)).append(pd.Series(<list of other elements>))).tolist()
通过简单地将列表添加在一起,可以创建新的列表。
list1 = ['value1','value2','value3']
list2 = ['value0']
newlist=list2+list1
print(newlist)
new_list = [x] + your_list
比your_list.insert(x)
效率低吗? - Charlie Parker