2024-05-08 02:56:39 发布
网友
我有一个整数和一个列表。我想创建一个新的列表,以变量开头,以列表结尾。 写a + list时出错。编译器将a作为整数处理,因此我不能使用append或extend。 你会怎么做?
a + list
a
请注意,如果您经常尝试执行该操作,特别是在循环中,则列表是错误的数据结构。
列表没有针对前面的修改进行优化,somelist.insert(0, something)是一个O(n) operation。
somelist.insert(0, something)
somelist.pop(0)和del somelist[0]也是O(n)操作。
somelist.pop(0)
del somelist[0]
要使用的正确数据结构是来自collections模块的^{}。deques公开了一个类似于列表的接口,但是针对两个端点的修改进行了优化。他们有一个在前面插入的appendleft方法。
collections
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
>>>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)。负值被视为相对于数组的结尾。
array.insert(0, x)
array.insert(len(array), x)
array.append(x)
>>> a = 5 >>> li = [1, 2, 3] >>> [a] + li # Don't use 'list' as variable name. [5, 1, 2, 3]
请注意,如果您经常尝试执行该操作,特别是在循环中,则列表是错误的数据结构。
列表没有针对前面的修改进行优化,
somelist.insert(0, something)
是一个O(n) operation。somelist.pop(0)
和del somelist[0]
也是O(n)操作。要使用的正确数据结构是来自} 。deques公开了一个类似于列表的接口,但是针对两个端点的修改进行了优化。他们有一个在前面插入的
collections
模块的^{appendleft
方法。演示:
工作原理:
array.insert(index, value)
在给定位置插入项目。第一个参数是要插入的元素的索引,因此
array.insert(0, x)
插入在列表的前面,而array.insert(len(array), x)
相当于array.append(x)
。负值被视为相对于数组的结尾。相关问题 更多 >
编程相关推荐