Python:如何移除嵌套列表子列表中的'N'元素?
移除嵌套列表中指定元素的解决方案
问题描述
给定如下嵌套列表,每个子列表以整数开头和结尾,中间为'Y'或'N'组合,需要移除所有'N'元素,仅保留整数:
original_list = [[461, 'N', 'N', 547], [549, 'N', 'N', 623], [926, 'N', 'N', 'N', 'N', 1099], [1101, 'N', 'N', 'N', 'N', 1262], [1638, 'N', 'N', 'N', 'N', 1795], [1797, 'N', 'N', 'N', 'N', 1942], [2279, 'N', 'N', 2357], [2359, 'N', 'N', 2425], [2686, 'N', 'N', 2764], [2766, 'N', 'N', 2832], [3099, 'N', 'N', 3182], [3184, 'N', 'N', 3254], [3333, 'N', 'N', 3403], [3405, 'N', 'N', 3475], [3564, 'N', 'N', 3642], [3644, 'N', 'N', 3710]]
期望得到的结果:
[[461, 547], [549, 623], [926, 1099], [1101, 1262], [1638, 1795], [1797, 1942], [2279, 2357], [2359, 2425], [2686, 2764], [2766, 2832], [3099, 3182], [3184, 3254], [3333, 3403], [3405, 3475], [3564, 3642], [3644, 3710]]
解决方案
使用嵌套列表推导式可以简洁实现需求,直接过滤出每个子列表中的整数元素:
original_list = [[461, 'N', 'N', 547], [549, 'N', 'N', 623], [926, 'N', 'N', 'N', 'N', 1099], [1101, 'N', 'N', 'N', 'N', 1262], [1638, 'N', 'N', 'N', 'N', 1795], [1797, 'N', 'N', 'N', 'N', 1942], [2279, 'N', 'N', 2357], [2359, 'N', 'N', 2425], [2686, 'N', 'N', 2764], [2766, 'N', 'N', 2832], [3099, 'N', 'N', 3182], [3184, 'N', 'N', 3254], [3333, 'N', 'N', 3403], [3405, 'N', 'N', 3475], [3564, 'N', 'N', 3642], [3644, 'N', 'N', 3710]] # 过滤出所有整数元素 filtered_list = [[item for item in sublist if isinstance(item, int)] for sublist in original_list] print(filtered_list)
说明
- 外层列表推导式遍历原始列表中的每一个子列表
- 内层列表推导式遍历子列表中的每个元素,通过
isinstance(item, int)判断元素是否为整数,只保留符合条件的元素 - 如果场景中只需要排除'N'(保留'Y'),可以把判断条件改成
item != 'N'
内容的提问来源于stack exchange,提问作者tmckinney
相关产品推荐
相关产品推荐

