Python如何通过递归函数实现双层列表元素顺序反转
双层列表递归反转实现
需求目标
对双层结构列表做双重顺序反转:
- 反转外层列表中子列表的排列顺序
- 反转每个内层子列表自身的元素顺序
输入输出示例
原始输入:
xss1 = [['a1','a2'], ['b1','b2','b3','b4'], ['c1','c2','c3']]
期望输出:
xss2 = [['c3','c2','c1'], ['b4','b3','b2','b1'], ['a2','a1']]
现有代码问题
你当前编写的xxR函数仅支持单层列表反转:逻辑为每次取列表最后一个元素,拼接剩余列表切片的递归反转结果,没有对列表内的元素类型做判断,无法自动处理内层子列表的反转。
调整后递归实现
核心调整点:取到当前列表的最后一个元素时,先判断元素是否为列表类型,如果是则递归调用反转函数处理内层列表,再做外层拼接。
def xxR(xs): # 递归终止条件:空列表直接返回 if not xs: return [] last = xs[-1] # 若当前元素是列表,先递归完成内层反转 if isinstance(last, list): last = xxR(last) # 拼接处理后的尾部元素 + 剩余部分的反转结果 return [last] + xxR(xs[:-1])
效果验证
执行测试代码:
xss1 = [['a1','a2'], ['b1','b2','b3','b4'], ['c1','c2','c3']] xss2 = xxR(xss1) print(xss2)
运行输出为[['c3', 'c2', 'c1'], ['b4', 'b3', 'b2', 'b1'], ['a2', 'a1']],完全符合预期。
注:该逻辑天然支持任意层级的嵌套列表反转,不止局限于双层结构。
内容的提问来源于stack exchange,提问作者minjun kim
相关产品推荐
相关产品推荐

