Python遍历嵌套列表筛选元素并保留原有嵌套结构的实现方法
实现方案
使用嵌套列表推导式即可在保留原有嵌套结构的前提下完成筛选,写法非常简洁:
names = [['Matt', 'Matt', 'Paul'], ['Matt']] matts = [[name for name in sublist if name == "Matt"] for sublist in names]
执行后输出结果完全符合预期:[['Matt', 'Matt'], ['Matt']]。
原理解释
你之前写的扁平列表推导式把两层循环放在了同一层级,所有符合条件的元素都会直接插入最外层列表,导致结构被拍平。而嵌套推导式的逻辑和你手写的循环完全等价:
- 外层遍历原始列表的每一个子列表
- 内层对每个子列表单独做过滤,生成新的子列表后再插入最终结果
因此可以完美保留原来的嵌套层级结构,不需要手动写append逻辑。
内容的提问来源于stack exchange,提问作者matthew_obrien
相关产品推荐
相关产品推荐

