Python: 为所有嵌套列表项(级别1)创建新的列表

2024-09-28 05:21:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个嵌套列表(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"])],
            [([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]]

但这是行不通的(显然,我猜)。可能是个简单的问题,但我解决不了,请帮忙?你知道吗


Tags: in名称列表forlenrangeprintx1b
2条回答

您可以使用Dictionary这里,需要使用带有"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'])]

有关词典的更多信息,请访问:

Python Dictionary

如果我正确地理解了这个问题,那么您希望标识嵌套列表中的最后一个嵌套及其索引。我能想到的解决方案并不简单,但值得学习:

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()

相关问题 更多 >

    热门问题