0

我想用我的 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]

有人可以在这里帮助我吗?

4

3 回答 3

2

目前尚不清楚j循环之前的值是多少,但看起来您正在使用它来测量port.getregisters(). 试试这个单行:

result = [[[port.getname(), port.getsize()], len(port.getregisters())] for port in portlist1]
于 2013-07-17T18:32:45.900 回答
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
于 2013-07-17T18:30:47.667 回答
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
于 2013-07-17T18:52:22.657 回答