2013-07-17 3 views
0

Я хочу сделать несколько списков с моим для петель, Мой код:Создание множественного списка из петель

for port in portlist1: 
    print port.getname(),port.getsize() 
    for register in port.getregisters(): 
     j=j+1 
    print j 
    j=0 

Выход:

B 10 
    1 
    C 15 
    1 
    F 30 
    1 

Я хочу, чтобы перечислить все время:

List1=[[B,10],1] 
List2=[[C,15],1] 
List3=[[F,30],1] 

Может кто-нибудь помочь мне здесь?

+0

Поэтому в основном вы хотите, чтобы ваш выход отформатированы по-разному ? – turnt

+1

Использовать список: '[[[[p.getname(), p.getsize()], len (p.getregisters())] для p в файле portlist1]' – mtadd

ответ

2
lists = [] 
for port in portlist1: 
    l = [[port.getname(), port.getsize()]] 
    for register in port.getregisters(): 
     j=j+1 
    l.append(j) 
    lists.append(l) 
    j=0 
+0

Inline как предложено * alecxe * или использует генератор делает код намного, намного быстрее, чем ваш вариант с несколькими накладными расходами, такими как 'l.append'. BTW, 'j = j + 1' = lol. -> 'j + = 1' – akaRem

2

Это не ясно, каким было значение j перед циклом, но это выглядит, как вы используете его, чтобы измерить длину port.getregisters(). Попробуйте Однострочник:

result = [[[port.getname(), port.getsize()], len(port.getregisters())] for port in portlist1] 
+2

отсутствует закрытый парик на' len() 'звонок – mtadd

+1

Да, спасибо, исправлено. – alecxe

+0

Лучший, я думаю .. – akaRem

1

Это плохая идея, чтобы сделать новый список каждый раз, вы должны просто идти с вложенности каждый список. Если количество портов статично, вы можете использовать vars()['listX'] .. Но все же на самом деле не рекомендуется. Вы должны идти с ответом на данный kroolik или alecxe

Но если вам действительно нужно коснуться как ..:

List1=[[B,10],1] 
List2=[[C,15],1] 
List3=[[F,30],1] 

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

lname = "list" 
for i,p in enumerate(portlist1): 
    j = len(p.getregisters()) 
    vars()[lname+str(i)] = [(p.getname(),p.getsize()), j] 

print list0 
print list1 
print list2 
+0

'vars() [lname + str (i)]' is unpythonic – akaRem

+0

@akaRem: Это не так, как я рекомендовал, я просто ответил на его вопрос: _ «Создание нескольких списков из циклов» _ – JHolta

+0

Это действительно похоже на вас рекомендую его для решения этой проблемы. – akaRem

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