Добавить целое число в начало списка в Python

у меня есть целое число и список. Я хотел бы сделать новый список из них, начиная с переменных и заканчивая список. Пишу a + list Я получаю ошибки. Компилятор обрабатывает a как целое число, поэтому я не могу использовать append или extend. Как бы ты это сделал?

5 ответов


>>> 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)

вставьте элемент в заданное положение. Первый аргумент-это индекс элемента, перед которым нужно вставить, so 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) операции.

правильная структура данных для использования является deque С 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

другой способ сделать то же самое,

list[0:0] = [a]

новые списки можно сделать, просто добавив списки вместе.

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