给定以下嵌套列表,
myList=([1,[2,3],[[4,5,[6],7],8,9]])
我想将其反转为:
myList= [[[4, 5, [6], 7], 8, 9], [2, 3], 1]
我怎么做?谢谢。
给定以下嵌套列表,
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]])
经过
我的列表 = 我的列表 [::-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
这假设您不想原位反转原始列表(并且没有被要求实际开发运行时已经提供的功能,如果您将其标记为家庭作业,这很可能是这种情况。 . ;)