如何使用列表推导式循环处理嵌套列表实现格式转换?
列表结构转换需求
原列表:
lst = [[['X', 'A'], 1, 2, 3], [['Y', 'B'], 1, 2, 3], [['Z', 'C'], 1, 2, 3]]
目标转换结果:
new_lst = [['X', 1, 2, 3], ['A', 1, 2, 3], ['Y', 1, 2, 3], ['B', 1, 2, 3], ['Z', 1, 2, 3], ['C', 1, 2, 3]]
你已实现单个子元素的转换逻辑:
lst2 = [['X', 'Y'], 1, 2, 3] fst, *rest = lst2 new_lst3= [[i, *rest] for i in fst]
执行后得到:new_list3 = [['X', 1, 2, 3], ['Y', 1, 2, 3]]
解决方案
1. 嵌套列表推导式(简洁实现)
基于你已有的单元素转换逻辑,外层嵌套遍历原列表的推导即可:
lst = [[['X', 'A'], 1, 2, 3], [['Y', 'B'], 1, 2, 3], [['Z', 'C'], 1, 2, 3]] new_lst = [[i, *rest] for item in lst for fst, *rest in [item] for i in fst]
2. 显式循环实现(符合你的需求)
通过两层循环完成:外层遍历原列表的每个元素,内层遍历每个元素的首项子列表,生成新子列表并收集到结果中:
lst = [[['X', 'A'], 1, 2, 3], [['Y', 'B'], 1, 2, 3], [['Z', 'C'], 1, 2, 3]] new_lst = [] for item in lst: fst, *rest = item for char in fst: new_lst.append([char, *rest])
运行上述代码后,new_lst将完全匹配你期望的结构。
内容的提问来源于stack exchange,提问作者abh
相关产品推荐
相关产品推荐

