如何在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个元素)。有关如何在循环中处理此问题的任何想法吗?
答案 0 :(得分:4)
也许是这样的。请注意,我直接在列表上使用迭代来节省大量不必要的索引。
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)
如果您正在使用内部循环来搜索类别索引,正如我怀疑的那样,字典可能是避免内循环的有用补充。
答案 1 :(得分:1)
我有一些友好的建议:
首先,最开始的a = 0是多余的。你这样做 在第一个for循环中,a = 0,同样的事情两次。
其次,为什么要为xy声明一个庞大的列表元素框架 顶端?您可以随时追加()您需要的东西 沿。
最后,你的while循环只是一个简单的for循环:
for n in range(len(catid)):
答案 2 :(得分:0)
您可以使用列表扩展来制作列表列表,如下所示:
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]
]