如何反转嵌套的Python列表

时间:2012-05-21 13:01:52

标签: python

给出以下嵌套列表,

myList=([1,[2,3],[[4,5,[6],7],8,9]])

我想将其反转以转换为:

myList= [[[4, 5, [6], 7], 8, 9], [2, 3], 1]

我该怎么做? 感谢。

4 个答案:

答案 0 :(得分:2)

您可以定义一个递归过程来检查元素本身是否为列表。如果元素不是列表,则直接将其附加到结果中。如果一个元素是一个列表,那么该过程使用这个list-element作为输入等进行递归调用。最终结果是反向列表:

def is_list(p): 
return isinstance(p, list)

def deep_reverse(mylist):
result = []
for e in mylist:
    if isinstance(e, list):
        result.append(deep_reverse(e))
    else:
        result.append(e)
result.reverse()
return result

例如: 列表[1,[8,9,[4,[5,9]]]成为 [[[[9,5],4],9,8],1]

答案 1 :(得分:0)

实际上很容易,你可以改变这个:

<强> myList中=([1,[2,3],[[4,5,[6],7],8,9]])

通过

myList = myList [:: - 1]

就是这样!

答案 2 :(得分:0)

使用列表切片可以轻松完成此操作

In [60]: myList
Out[60]: [1, [2, 3], [[4, 5, [6], 7], 8, 9]]

In [61]: myList[::-1]
Out[61]: [[[4, 5, [6], 7], 8, 9], [2, 3], 1]

有关详细信息,请转到     https://docs.python.org/2.3/whatsnew/section-slices.html

答案 3 :(得分:-1)

如果这是真正的功课,它应该被标记为,否则,“用户定义的功能来反转列表”的答案可能是功能:

import copy
def rev(l):
    lc = copy.deepcopy(l)
    lc.reverse()
    return lc

这假设您不希望反转原始列表(并且不负责实际开发已经由运行时提供的函数,这很可能是您将此标记为作业......;)