如何使用列表推导式展平嵌套列表的最后一层?
如何展平嵌套列表的最后一层?
给定如下嵌套列表结构:
lista = [['a'],['b']] listb = [['c']] nested = [lista, listb] # 当前结构:[[['a'], ['b']], [['c']]] # 目标:将最后一层单元素列表展平,得到 [['a', 'b'], ['c']] # 尝试的代码未达到预期 [[x for x in y] for y in nested] # 输出仍为:[[['a'], ['b']], [['c']]]
由于最后一层始终是单元素列表,可以通过以下两种方式实现展平:
方法一:提取单元素列表的唯一元素
直接在列表推导式中访问每个内层列表的第一个元素:
result = [[item[0] for item in sublist] for sublist in nested] print(result) # 输出:[['a', 'b'], ['c']]
方法二:合并内层列表
利用sum()函数将子列表中的单元素列表合并为一个列表:
result = [sum(sublist, []) for sublist in nested] print(result) # 输出:[['a', 'b'], ['c']]
补充背景:最后一层的单元素列表结构,源于使用了类似[myfunc(x) for x in y for y in other_nested_list]的列表推导式(注:该推导式存在循环顺序错误,正确的嵌套循环推导式应将外层循环前置,即[myfunc(x) for y in other_nested_list for x in y],而myfunc的返回值为单元素列表,最终形成了三层嵌套结构)。
内容的提问来源于stack exchange,提问作者gaut
相关产品推荐
相关产品推荐

