如何拆分嵌套列表第三元素的空格分隔值并生成新列表?
问题解决:提取嵌套列表中的拆分元素
你想要实现的是从嵌套列表里提取每个子列表的第三个元素,按空格拆分后合并成一个扁平化的新列表,这个需求很清晰。咱们先看看你代码里出问题的地方:
错误原因分析
- 索引使用错误:你写的
list[words]是完全错误的——words是循环里拿到的子列表(比如['x','y','a b c']),列表的索引必须是整数,不能用另一个列表当索引,这就是你看到TypeError: list indices must be integers or slices, not list的原因。 - 变量名不一致:内层循环定义的是
palabrasinList,但后面用的是wordsinList,这会导致未定义的变量问题(从报错信息看你可能是拼写时前后不一致)。 - 内层循环逻辑错误:你内层循环遍历的是子列表的长度(每个子列表长度是3),但其实你需要的是遍历拆分后的第三个元素的单词列表,而不是原列表的长度。
修正后的代码
咱们直接调整逻辑,先遍历每个子列表,取出第三个元素拆分,再把拆分后的每个元素添加到新列表里:
original_list = [['x','y','a b c'], ['x','y','d e f'], ['x','y','g h i']] words_input = [] for sublist in original_list: # 取出每个子列表的第三个元素,按空格拆分 split_words = sublist[2].split(" ") # 遍历拆分后的单词,添加到新列表 for word in split_words: words_input.append(word) print(words_input)
运行这段代码就能得到你想要的['a','b','c','d','e','f','g','h','i']。
更简洁的写法(列表推导式)
如果想让代码更简洁,可以用Python的列表推导式一行搞定:
original_list = [['x','y','a b c'], ['x','y','d e f'], ['x','y','g h i']] words_input = [word for sublist in original_list for word in sublist[2].split(" ")] print(words_input)
这个写法和上面的循环逻辑完全一致,只是更紧凑。
内容的提问来源于stack exchange,提问作者dlopez3575
相关产品推荐
相关产品推荐

