嵌套列表特定元素提取:生成新嵌套列表的代码问题排查
问题排查与解决方案
核心问题分析
你遇到的重复输出问题,根源出在变量初始化的位置错误:
- 你把
liste_globale = []放在了外层循环(for list in list_Pos:)的内部,这意味着每次处理一个子列表时,都会把最终结果列表清空重置。循环结束后,liste_globale里只会保留最后一个子列表处理后的结果,后续的重复输出大概率是因为错误地重复追加了同一列表对象导致的。 - 另外,你用
elt.split()默认按任意空白符拆分,但你的元素是用制表符\t分隔的,用split('\t')会更精准,避免意外拆分。
修正后的代码
# 先初始化最终结果列表,放在外层循环外面! liste_globale = [] for sublist in list_Pos: nouvelle_liste = [] for elt in sublist: # 用制表符精准拆分,取第三部分(Python索引从0开始,第三部分对应索引2) parts = elt.split('\t') # 增加长度判断,避免格式异常的元素抛出索引错误(可选但更健壮) if len(parts) >= 3: nouvelle_liste.append(parts[2]) liste_globale.append(nouvelle_liste) print(liste_globale)
代码关键调整说明
liste_globale初始化移到外层循环外:这样每次处理完一个子列表,都会把生成的nouvelle_liste追加到最终结果里,不会丢失之前的内容。- 用
split('\t')替代split():严格按照输入的制表符分隔规则拆分元素,避免因其他空白符导致的拆分错误。 - 增加长度判断:防止某些格式异常的元素(比如少于3个部分)触发索引越界错误,让代码更稳定。
预期效果
运行修正后的代码,会生成每个子列表对应提取第三部分的嵌套列表,比如第一个子列表会输出:['moi', 'je', 'ne', 'trouver', 'pas', 'très', 'esthétique', '.']
所有子列表的内容都会被正确提取,不会出现重复问题。
内容的提问来源于stack exchange,提问作者kely789456123
相关产品推荐
相关产品推荐

