Python:为所有嵌套列表项创建新列表(级别1)
我有一个嵌套列表(4个级别),希望将每个列表项(第一个级别)作为一个新列表分发。我知道如何打印:Python:为所有嵌套列表项创建新列表(级别1),python,list,loops,Python,List,Loops,我有一个嵌套列表(4个级别),希望将每个列表项(第一个级别)作为一个新列表分发。我知道如何打印: mynestedlist = [[([6, "x1a", "y1a"], [8, "x1b", "y1b"]), ([9, "x2a", "y2b"], [4, "x2b", "y2b"])], [([6, "x1a", "y1a"], [9, "x2a", "y2b"]), ([8, "x1b", "y1b"], [4, "x2b", "y2b"])],
mynestedlist = [[([6, "x1a", "y1a"], [8, "x1b", "y1b"]), ([9, "x2a", "y2b"], [4, "x2b", "y2b"])],
[([6, "x1a", "y1a"], [9, "x2a", "y2b"]), ([8, "x1b", "y1b"], [4, "x2b", "y2b"])],
[([6, "x1a", "y1a"], [4, "x2b", "y2b"]), ([9, "x2a", "y2b"], [8, "x1b", "y1b"])]]
for i in range(0,len(mynestedlist)):
print(i)
print(mynestedlist[i])
但我想把每一项都列成一个新的清单。我不能这样做,因为我不知道如何自动更改列表的名称,这样我就不会在每个循环中覆盖我的列表。
我试过这样的方法:
for i in range(0,len(mynestedlist)):
"list"+str(i) = [mynestedlist[i]]
但这不起作用(我想很明显)。可能是一个简单的问题,但我无法解决它,请帮助?您可以使用
字典
这里,字典带有“list+str(I)”
键和值是所需的列表:
myDic = {}
for key,value in enumerate(mynestedlist,1):
myDic["list"+str(key)] = value
结果:
{'list3': [([6, 'x1a', 'y1a'], [4, 'x2b', 'y2b']), ([9, 'x2a', 'y2b'], [8, 'x1b', 'y1b'])], 'list1': [([6, 'x1a', 'y1a'], [8, 'x1b', 'y1b']), ([9, 'x2a', 'y2b'], [4, 'x2b', 'y2b'])], 'list2': [([6, 'x1a', 'y1a'], [9, 'x2a', 'y2b']), ([8, 'x1b', 'y1b'], [4, 'x2b', 'y2b'])]
有关词典的更多信息,请访问此处:
如果我理解正确,您希望在嵌套列表中标识最后一个嵌套及其索引。我能想到的解决方案并不简单,但值得学习:
def lastnest(nest, level=0, c=0):
level += 2
counter = 0
for j in nest:
if any([type(x) == list or type(x) == tuple for x in j]):
for i in j:
c += 1
if type(i) is list or type(i) is tuple:
lastnest(i, level=level, c=c)
else:
counter += 1
print level, (c-1)%len(j), counter, j
lastnest(mynestedlist)
这应该打印出级别、嵌套id和嵌套项索引以及列表本身,但它确实假设所有最后的嵌套都是相同的
len()
我建议使用,而不是范围
。非常感谢!这很有效。然而,难道不可能产生清单,而不是口述吗?或者这是可能的,但是这是更好的方法吗?@ EelaaWiMuleWuChs,我不知道为什么你不想使用<代码> DICT<代码>,因为你可以用它做任何事情作为列表,列表不能有你想的名字,或者任何答案已经解决了你的问题,请通过点击复选标记来考虑。这向更广泛的社区表明,你已经找到了一个解决方案,并给回答者和你自己带来了一些声誉。没有义务这样做。