Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从循环创建多个列表_Python - Fatal编程技术网

Python 从循环创建多个列表

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循环创建多个列表,我的代码是:

  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
,它速度快,内存安全。。但我不会再推了