繁体   English   中英

如何反转嵌套的 Python 列表

[英]How To Reverse A Nested Python List

鉴于以下嵌套列表,

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

我想将其反转以转换为:

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

我怎么做? 谢谢。

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

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]

其实这很容易,你可以扭转这个:

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

经过

myList = myList[::-1]

而已 !

这可以通过列表切片轻松完成

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

如果这真的是家庭作业,则应将其标记为这样,否则,“用于反转列表的用户定义函数”的答案可能是该函数:

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

这假设您不想原地反转原始列表(并且没有被要求实际开发运行时已经提供的功能,如果您将其标记为作业,很可能就是这种情况。. .;)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM