转换为嵌套在lis列表中的元组列表

2024-04-25 18:00:13 发布

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

我需要使用set(myList),但这是不可能的,因为我有一个列表列表。(它给出了一个不可散列的错误)。你知道吗

所以我决定把列表中的每个元素转换成一个元组。列表大致如下:

MyList[elem1, elem2, [nested1, nested2, [veryNested1, veryNested2]]]

如何快速将所有内容转换为元组,然后再转换回列表?你知道吗


Tags: 元素内容列表错误元组setmylistelem1
3条回答

使用递归

MyList = ['elem1', 'elem2', ['nested1', 'nested2', ['veryNested1', 'veryNested2']]]

print MyList

def tupconv(lst):
    tuplst = []
    for x in lst:
        if isinstance(x, list):
            tuplst.append(tupconv(x))
        else:
            tuplst.append(x)

    return tuple(tuplst)


def listconv(tup):
    lst = []
    for x in tup:
        if isinstance(x, tuple):
            lst.append(listconv(x))
        else:
            lst.append(x)

    return lst

mytup = tupconv(MyList)
print mytup

mylist = listconv(mytup)
print mylist

嗯,我以前见过这种问题。我通过使用递归解决了这个问题(假设最后一个元素是下一个级别,并且我知道递归需要多深才能将其拆分)。你知道吗

话虽如此,我想最好问问你是以那种格式给你这份名单,还是通过某种程序把它做成那样?这可能会帮助我们避免一些不必要的头部打击。你知道吗

这应该做到:

def lol_to_tuple(lol):
    return tuple(el if type(el) is not list 
                    else lol_to_tuple(el) 
                 for el in lol)

要返回,只需将tuple替换为list:

def tuples_to_lol(tuples):
    return list(el if type(el) is not tuple 
                   else tuples_to_lol(el) 
                for el in tuples)

相关问题 更多 >