从循环创建多个列表

时间:2013-07-17 18:28:44

标签: python

我想用for循环创建多个列表,我的代码是:

  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]

有人可以帮助我吗?

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

不清楚循环前j的值是多少,但看起来你用它来衡量port.getregisters()的长度。试试这个单行:

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

答案 2 :(得分:1)

每次创建一个新列表是个坏主意,你应该只是嵌套每个列表。如果端口数量是静态的,您可以使用vars()['listX'] ..但仍然没有真正推荐。您应该使用kroolikalecxe

给出的答案

但如果你真的需要像......那样:

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