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

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

Ответ 1

>>> a = 5
>>> li = [1, 2, 3]
>>> [a] + li  # Don't use 'list' as variable name.
[5, 1, 2, 3]

Ответ 2

>>>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). Негативные значения рассматриваются как относящиеся к концу массива.

Ответ 3

Обратите внимание, что если вы пытаетесь часто выполнять эту операцию, особенно в циклах, список - это неправильная структура данных.

Списки не оптимизированы для модификаций спереди, а somelist.insert(0, something) - операция O (n).

somelist.pop(0) и del somelist[0] также являются операциями O (n).

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

Ответ 4

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

list[0:0] = [a]

Ответ 5

Новые списки могут быть сделаны простым добавлением списков вместе.

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

Ответ 6

Основываясь на некоторых (минимальных) тестах с использованием модуля timeit кажется, что следующее имеет аналогичные, если не лучшую производительность, чем принятый ответ

new_lst = [a, *lst]

Как и в случае с [a] + list это создаст новый список, а не изменяет lst.

Если вы хотите lst.insert(0, a) список, используйте lst.insert(0, a).

Ответ 7

Ничто из этого не помогло мне. Я преобразовал первый элемент в серию (серию из одного элемента), преобразовал второй элемент также в серию и использовал функцию добавления.

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

Ответ 8

list_1.insert(0,ur_data)

убедитесь, что ur_data имеет строковый тип, поэтому, если у вас есть data= int(5) преобразуйте его в ur_data = str(data)

Ответ 9

Вы можете использовать список распаковки:

а = 5

li = [1,2,3]

li = [a, * li]

=> [5, 1, 2, 3]