2011-12-18 3 views
1

Это единственный путь я могу думать выглядит следующим образом:Каков правильный способ создания списка из переменной и другого списка?

var = 1 
list = [2, 3, 4] 
newList = [var,] + list 

Является ли это правильный путь?

Update: Мне нужно, чтобы создать новый список, чтобы вставить не помогло бы

+2

ничего плохого в вашем пути –

+2

Дополнительная запятая не требуется. Вы используете дополнительную запятую, когда вы объявляете кортеж 't = (1,)', чтобы отличить скобки группировки от скобок «tupling». При использовании квадратных скобок нечего отличать: 'l = [1]' отлично работает. Еще одна вещь, никогда не объявляйте элемент как «list», потому что вы теряете встроенную функцию «list()», которая преобразует итерации в список объектов. – juliomalegria

ответ

2

Как правило, вы не должны добавлять вещи в начало списка в Python: это O (n) в стоимости.

Если у вас есть (и часто неэффективность не имеет значения), вы можете сделать это:

[a] + other_list 

Если вы не против обновления списка у вас есть, вы можете сделать это:

other_list.insert(0, a) 

Если вы можете использовать итератор, а не список, вы можете эффективно использовать:

itertools.chain([a], other_list) 
0

Используйте метод на добавление:

list.append(var) 

или вставку вы хотите поместить новый элемент в начале:

list.insert(0,var) 
+2

Это изменяет исходный список, * и * он помещает новое значение в неправильное место. –

+0

Чтобы быть справедливым, не будет ли это делать var на противоположном конце по сравнению с кодом OP? –

+0

-1: добавьте элементы 'append' и' extend' в конце списка + оба изменения исходного списка + 'extend (var)' не будут работать, 'extend' работает только с итерируемыми объектами – juliomalegria

0

Что относительно этого?

a_list = [] 
v = 1 
list_to_add = [2, 3, 4] 
a_list.append(v) 
a_list.extend(list_to_add) 
2

Я не уверен, что вы хотите, чтобы подразумевать, используя , после var но обычно вы выиграли, т нужно. Как вы пытаетесь получить другие варианты здесь еще один способ сделать

lst.insert(0,var) 

Если вы не собираетесь изменить первоначальный список, который вы можете скопировать его в другой список

newList=lst[::] 

, а затем сделать вставка

lst.insert(0,var) 

Это вопрос стиля, но я предпочитаю

newList=[var]+lst 

Примечание * * Вообще, если вы не собираетесь изменить первоначальный список,

newlst = [var] + lst 

выглядит чище

, но в случае, если вы хотите изменить в месте ваши варианты

lst = [var] + lst 

или

lst.insert(0,var) 

Поздний один является предпочтительным, поскольку он является более удобным для чтения и к тому же вы можете использовать его внутри лямбда и списка-понимания :-)

+1

запятая если вы делаете кортеж –

+0

@DavidHeffernan Я понимаю, что :-). То, что я не мог понять в своем конкретном использовании со списком. – Abhijit

+0

пользователь просто привык делать это для кортежей, не понимает, что это подделка для списков –

4

Ваш метод штрафа (за исключением дополнительной запятой не требуется для 1-лист) ; люди так долго это делали.

0

Для справки, перейдите беспересадочный ugh this LIST

Смежные вопросы