2015-02-05 3 views
1

Я разбор списка в переменный и другой список с этим скриптом:разобрать список в переменный и Подсписке - вещий путь

b=[' 687.3774', ' 478.6', ' 47', ' 58', ' 96.90'] 
c,d=b[0],b[1:] 

Это всегда первый элемент, который был бы отделен и этот код работает отлично , однако он повторяет список b с правой стороны. Это не проблема , но это раздражает, когда мой b - это что-то большое, как line.replace('*',',').replace(' ',',').split(','). Это не похоже на питоновский способ записать это. Я прочитал некоторые сообщения на этом форуме и документацию по кортежам и т. Д., Но ничего подобного не сделал для меня. Ниже приведены некоторые вещи, которые я пытался в «выстрел в темноте» манере, и что, очевидно, не работает

d=[] 
c,d[:]=b 
c,list(d)=b 
c,d=b[0],[1:] 

Я также знаю о методе b.pop, но я не мог найти способ, чтобы использовать, что без повторения b в RHS.

Справка приветствуется. Спасибо.

+0

[Этот вопрос] (http://stackoverflow.com/a/10532492/2003420) показывает один из способов сделать это в Python 3 - аналогичным образом предложите в одном из ответов. Но не в Python 2 кажется, что вы хотите, чтобы вы спрашивали. – bvidal

ответ

2

В Python 3, вы можете попробовать

c, *d = b 

Он назначит b[0] к c, а остальные к d. Вы должны увидеть ответы this для объяснения того, как оператор * работает над последовательностями.

+1

Обратите внимание, что он совместим только с python 3. В противном случае я предполагаю, что добавление новой строки, которая охватывает всю процедуру 'line.replace ... split(), не является плохим выбором. –

+0

@Igor я не знал о его совместимости, спасибо. Я отредактировал сообщение соответственно. – VHarisop

+1

Нет проблем :) Также есть подробное объяснение расширенной распаковки: http://stackoverflow.com/questions/6967632/unpacking-extended-unpacking-and-nested-extended-unpacking. Это действительно опрятная функция в py3k, я бы хотел использовать ее больше :( –

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