如何将双层嵌套字符串列表转换为单层嵌套字符串列表且不丢失数据
解决方案
你的输入实际为三层嵌套结构,原有代码仅处理了两层嵌套,且错误使用字符串拼接逻辑导致不符合预期,可按以下方式修改:
固定三层嵌套场景
你给出的示例输入结构为[[[元素1], [元素2], ...]],要得到[[元素1, 元素2, ...]]的输出,直接提取最内层单元素列表的首个元素即可:
new_list = [[['SOCCER'],['-'],['JAPAN'],['GET'],['LUCKY'],['WIN'],[','],['CHINA'],['IN'], ['SURPRISE'],['DEFEAT'],['.']]] # 实现转换 result = [[item[0] for item in new_list[0]]]
如果外层列表包含多个待转换的三层块,结构为[[[块1元素1], ...], [[块2元素1], ...]],可以用嵌套推导式处理:
result = [[item[0] for item in block] for block in new_list]
嵌套深度不固定场景
如果列表嵌套层数可能变化,可以用递归先把内层展平为一维列表,再作为外层列表的元素:
def flatten_inner(lst): res = [] for item in lst: if isinstance(item, list): res.extend(flatten_inner(item)) else: res.append(item) return res result = [flatten_inner(block) for block in new_list]
原有代码问题说明
alot = [[ele for ele in sub] for sub in new_list]仅遍历了前两层嵌套,没有拆分最内层的单元素列表,输出仍然是三层结构outlst = [' '.join([str(c) for c in lst]) for lst in new_list]把列表元素拼接成了字符串,不符合你要的列表结构要求
内容的提问来源于stack exchange,提问作者user14237286
相关产品推荐
相关产品推荐

