2013-09-30 5 views
2

Я следующий список списков:Извлечение каждый списка из списков

list_sample = [[0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6], [0.021, 0.021, 0.021, 0.021, 0.021, 0.021, 0.021], [0.022, 0.022, 0.022, 0.022, 0.022, 0.022, 0.022],...] 

Я хотел бы, чтобы извлечь каждый список атрибутов и его в другой список, такие как:

for i,line in enumerate(list_sample): 
    if i==0: 
     Z_level=line 
    if i==1: 
     XD1=line 
    if i==2: 
     XD2=line 
    ..... 

Есть способ сделать это более эффективно? Благодаря

ответ

4

Или (в дополнение RobEarl) ответа,

Z_level, XD1, XD2, ... = list_sample 

Однако, если вы не знаете, насколько велика ваша list_sample, вам нужно искать, как динамически устанавливать переменные в python. Вы можете проверить, что некоторые из here

2

Нет необходимости в цикле:

Z_level = list_sample[0] 
XD1 = list_sample[1] 
XD2 = list_sample[2] 
... 
3

Если я читаю вас правильно, вы хотите назначить первый подсписком к Z_level, второй XD1 ...

Z_level, XD1, XD2 ... = list_sample 

Если вы хотите назначить 3 вещи:

Z_level, XD1, XD2 = list_sample[:3] 
2

до бесконечности, попробуйте это ...

for i,line in enumerate(list_sample): 
    if i == 0: 
     vars()["Z_level"] = line 
     continue 
    vars()["XD"+str(i)] = line 

Это просто для удовольствия, но вы должны, вероятно, не использовать это, читать комментарии от @defuz и @ DSM о том, почему.

Это, вероятно, является лучшим решением:

lists = {} 
for i,line in enumerate(list_sample): 
    if i == 0: 
     lists["Z_level"] = line 
     continue 
    lists["XD"+str(i)] = line 
+1

Я думаю, что это не тот случай, когда использование такой магии. Создание локальных переменных для большого числа подобных значений - зло. В конце концов, мы даже не знали, сколько локальных переменных мы создали. – defuz

+0

@defuz Я новичок в python. Я просто играю. :) –

+0

Это не будет работать, если оно есть в функции, потому что изменения в 'locals()' не гарантируются. Вместо этого просто используйте стандартный словарь. – DSM

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