[英]Making a list of lists in a For Loop
如何在for
循环中列出列表?
这是我现在编写的代码:
a = 0
xy=[[[],[]],[[],[]],[[],[]],[[],[]],[[],[]],[[],[]],[[],[]],[[],[]],[[],[]],[[],[]],[[],[]],[[],[]]]
for liness in range(len(NNCatelogue)):
a=0
for iii in range(len(NNCatelogue[liness])):
while a < len(catid):
if catid[a]==NNCatelogue[liness][iii]:
xyiii = (catid[a], a)
xy.append(xyiii)
a += 1
如我所料,我得到的输出是一个很长的成对列表。 它看起来如下所示:
[...,('C-18-1262', 30908),
('C-18-1264', 30910),
('C-18-1265', 30911),
('C-18-1267', 30913),
('C-18-1250', 30896),
('C-18-1254', 30900),...]
我想将此对列表变成对列表的列表。 有1268次迭代,每个列表的长度应为12。(因此1268个列表中每个都有12个元素)。 关于如何在循环中解决此问题的任何想法?
大概是这样的。 请注意,我直接在列表上使用迭代来节省很多不必要的索引。
xy = []
for line in NNCatelogue:
l = []
for c in line:
for a, ca in enumerate(catid):
if ca == c:
l.append((ca, a))
xy.append(l)
如果您使用内部循环只是为了搜索类别索引,就像我怀疑的那样,字典可能是避免内部循环的有用补充。
我马上就提出了一些友好的建议:
首先,一开始的a = 0是多余的。 您在第一个for循环中使用a = 0进行了两次相同的操作。
其次,为什么要在顶部声明一个庞大的xy列表元素框架? 您随时可以随需添加append()。
最后,while循环只是一个简单的for循环:
for n in range(len(catid)):
您可以使用列表扩展来创建列表列表,如下所示:
list_of_lists = [[j for j in range(0, 3)] for _ in range(0, 3)]
输出3x3列表:
[ [0, 1, 2],
[0, 1, 2],
[0, 1, 2]
]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.