Python 从循环创建多个列表
我想用for循环创建多个列表,我的代码是:Python 从循环创建多个列表,python,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] List
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]
有人能帮我吗?不清楚循环之前
j
的值是多少,但看起来您正在使用它来测量port.getregisters()的长度。试试这一行:
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
result = [[[port.getname(), port.getsize()], len(port.getregisters())] for port in portlist1]
循环之前不清楚j
的值是多少,但看起来您正在使用它来测量port.getregisters()的长度。试试这一行:
result = [[[port.getname(), port.getsize()], len(port.getregisters())] for port in portlist1]
每次都创建一个新的列表是个坏主意,你应该只创建每个列表的嵌套。如果端口数量是静态的,则可以使用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
每次都创建一个新的列表是个坏主意,你应该只创建每个列表的嵌套。如果端口数量是静态的,则可以使用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
因此,本质上您希望输出的格式不同?请使用列表理解:[[[p.getname(),p.getsize()],len(p.getregisters())]表示portlist1中的p]
因此本质上您希望输出的格式不同?请使用列表理解:[[p.getname(),p.getsize()],len(p.getregisters())]表示portlist1中的p]
缺少len()上的关闭参数call@alecxe Да пожалуйста! ;)len()上缺少关闭参数call@alecxe Да пожалуйста! ;)按照alecxe的建议内联或使用generator可以使代码比您的变体快得多,并且有多个查找开销,如l.append
。顺便说一句,j=j+1
=lol.-->j+=1
根据alecxe的建议,使用生成器可以使代码比您的变体快得多,并且具有多个查找开销,如l.append
。顺便说一句,j=j+1
=lol.-->j+=1
vars()[lname+str(i)]
unpythonic@akaRem:这不是我推荐的,我只是回答了他的问题:«从循环创建多个列表»看起来你真的推荐它来解决这个问题。。嗯。@akaRem,再读一遍:“但仍然不是真正的推荐。你应该按照kroolik或alecxe给出的答案去做。”。我回答了这个问题,他要求将不同的列表作为输出“我想每次都列出来:*给出的例子*”“我想每次都列出来”->使用yield
,它速度快,内存安全。。但我不会再推了<代码>变量()[lname+str(i)]
isunpythonic@akaRem:这不是我推荐的,我只是回答了他的问题:«从循环创建多个列表»看起来你真的推荐它来解决这个问题。。嗯。@akaRem,再读一遍:“但仍然不是真正的推荐。你应该按照kroolik或alecxe给出的答案去做。”。我回答了这个问题,他要求将不同的列表作为输出“我想每次都列出来:*给出的例子*”“我想每次都列出来”->使用yield
,它速度快,内存安全。。但我不会再推了