Python中如何移除嵌套列表(列表的列表)内的所有0值元素
移除嵌套列表中的0值元素实现方案
问题描述
需要对两层嵌套的坐标列表做清洗,剔除所有值为0的冗余元素,保留所有坐标元组,且不改变原有坐标的排列顺序。
原始输入
coord = [[(1.0, 1.0), (4.0, 2.0), 0, 0, 0, 0, (1.0, 5.0), 0, 0, (3.0, 3.0)], [(1.0, 1.0), (4.0, 2.0), 0, 0, 0, 0, (1.0, 5.0), 0, 0, (3.0, 3.0)]]
期望输出
[[(1.0, 1.0), (4.0, 2.0), (1.0, 5.0), (3.0, 3.0)], [(1.0, 1.0), (4.0, 2.0), (1.0, 5.0), (3.0, 3.0)]]
实现代码
直接使用两层列表推导式遍历过滤即可,代码简洁可读性强:
# 原始嵌套列表 coord = [[(1.0, 1.0), (4.0, 2.0), 0, 0, 0, 0, (1.0, 5.0), 0, 0, (3.0, 3.0)], [(1.0, 1.0), (4.0, 2.0), 0, 0, 0, 0, (1.0, 5.0), 0, 0, (3.0, 3.0)]] # 过滤所有0值元素 coord = [[element for element in sublist if element != 0] for sublist in coord]
逻辑说明
- 外层推导式遍历最外层列表的每一个子坐标组
- 内层推导式遍历单个子组内的所有元素,判断元素值不等于0时才保留
- 处理过程不会改变原有坐标元组的先后顺序,输出结果和预期完全匹配
内容的提问来源于stack exchange,提问作者Gabriel Salles
相关产品推荐
相关产品推荐

