У меня есть целое число и список. Я хотел бы сделать новый список из них, начиная с переменной и заканчивая списком.
Написание a + list
Я получаю ошибки. Компилятор обрабатывает a
как целое число, поэтому я не могу использовать append или расширять его.
Как вы это сделаете?
Добавить целое число в начало списка в Python
Ответ 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]