如何在不打乱子列表顺序的前提下反转主列表中的每个子列表?
嵌套列表中子列表的反转解决方法
需求说明
给定嵌套列表:
original_list = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]]
需要反转其中每个子列表,最终输出:
[[4, 3, 2, 1], [8, 7, 6, 5], [12, 11, 10, 9], [16, 15, 14, 13]]
错误尝试分析
- 单独定义反转每个子列表再重新组合:未直接操作原主列表,不符合需求
- 将子列表转为字符串反转后转整数:字符串反转会打乱整个列表的字符顺序,无法正确识别整数元素,导致报错
- 使用错误的列表推导式
NewList= [x for [x] in list]:子列表包含多个元素,但推导式用[x]试图匹配单个元素,引发元素数量不匹配的异常
正确解决方案
方法1:直接修改原列表(原地反转)
遍历原列表的每个子列表,调用列表reverse()方法原地反转,直接操作主列表:
original_list = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]] for sublist in original_list: sublist.reverse() print(original_list)
输出结果符合要求,且直接修改了原主列表。
方法2:生成新列表的正确列表推导式
如果允许生成新列表,可用切片操作反转每个子列表:
original_list = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]] new_list = [sublist[::-1] for sublist in original_list] print(new_list)
切片[::-1]返回子列表的反转副本,推导式遍历每个子列表生成反转后的新列表,写法简洁高效。
方法3:用map函数结合切片
也可以用map()函数对每个子列表执行反转操作:
original_list = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]] new_list = list(map(lambda x: x[::-1], original_list)) print(new_list)
lambda表达式定义反转逻辑,map()将其应用到每个子列表,最后转成列表得到结果。
内容的提问来源于stack exchange,提问作者blissexec
相关产品推荐
相关产品推荐

