如何反转嵌套列表中的每个元素?已尝试reversed与[::-1]无效
解决嵌套列表的元素反转问题
你当前用list1[::-1]或reversed(list1)只能反转整个外层列表的元素顺序,但不会处理其中的子列表内容。要得到目标输出,需要同时反转外层列表顺序,并且反转每个子列表的内部元素。
可以用列表推导式一步实现:
list1 = [1, 2, 3, [4, 5, 6], 6, 7, [8, 9, 10]] # 先反转外层列表,再对每个元素判断:是子列表则反转内部,否则保留原元素 result = [item[::-1] if isinstance(item, list) else item for item in list1[::-1]] print(result)
运行后会得到你想要的输出:
[[10, 9, 8], 7, 6, [6, 5, 4], 3, 2, 1]
代码说明
list1[::-1]:先将整个外层列表反转,得到[[8,9,10],7,6,[4,5,6],3,2,1]- 列表推导式遍历反转后的外层列表,对每个元素做判断:
- 若元素是列表(通过
isinstance(item, list)判定),则用item[::-1]反转其内部元素 - 若非列表元素,直接保留原值
- 若元素是列表(通过
如果你觉得列表推导式不够直观,也可以分两步写:
list1 = [1, 2, 3, [4, 5, 6], 6, 7, [8, 9, 10]] # 第一步:反转外层列表 reversed_outer = list1[::-1] # 第二步:逐个处理子列表 final_result = [] for item in reversed_outer: if isinstance(item, list): final_result.append(item[::-1]) else: final_result.append(item) print(final_result)
内容的提问来源于stack exchange,提问作者Krishna Mandal
相关产品推荐
相关产品推荐

