从循环中列出python中的排列

时间:2013-07-19 09:51:25

标签: python

我的代码是这样的:

j=0
list1=[]

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

输出打印列表1是:

      [[['B', 10], 2], [['C', 25], 1], [['F', 30], 0]]

如果我想使用函数

,我应该做些什么改变
      register.getaddress(),register.getdirection() inside 2nd for loop instead of increment j.

所以我的输出应该是:

 print list1:      [[['B', 10], [['1000',IN],['1',OUT]]], [['C', 25], ['v', 1001]], [['F', 30], []]]
 print list1[0]:   [['B', 10], [['1000',IN],['1',OUT]]
 print list1[0][1]:  ['1000',IN],['1',OUT]

1 个答案:

答案 0 :(得分:0)

我认为你可以用列表理解来做到这一点:

list1 = []

for port in portlist1:
    l = [[port.getname(),port.getsize()],
         [[register.getaddress(), register.getdirection()]
          for register in port.getregisters()]]
    list1.append(l)

但是,这会给你一个噩梦般的深层嵌套列表。我认为Babu关于使用字典的评论是正确的。以下是您可以通过这种方式改进的方法:

dict1 = {}
for port in portlist1:
    dict1[port.getname()] = {"size": port.getsize(),
                             "registers": {register.getaddress(): register.getdirection()
                                           for register in port.getregisters}}