如何从按三元组分组的列表中提取非空元素?
按三元组分组提取非空元素的解决方案
问题描述
给定如下列表,每3个元素为一组:
labels = ['', '', '5000','', '2', '','', '', '1000','mm-dd-yy', '', '','', '', '15','dd/mm/yy', '', '', '', '3', '','', '', '200','', '2', '','mm-dd-yy', '', '','', '', '','', '', '']
需要遍历每个三元组,提取组内的非空元素;若组内三个元素均为空,则返回空字符串,最终得到目标列表:
required_list = ['5000','2','1000','mm-dd-yy','15','dd/mm/yy','3','200','2','mm-dd-yy','','']
解决方案代码
labels = ['', '', '5000','', '2', '','', '', '1000','mm-dd-yy', '', '','', '', '15','dd/mm/yy', '', '', '', '3', '','', '', '200','', '2', '','mm-dd-yy', '', '','', '', '','', '', ''] # 将原列表按每3个元素拆分成分组 groups = [labels[i:i+3] for i in range(0, len(labels), 3)] # 处理每个分组生成结果列表 required_list = [] for group in groups: # 筛选当前分组中的非空元素 non_empty_items = [item for item in group if item] # 有非空元素则取第一个,否则添加空字符串 required_list.append(non_empty_items[0] if non_empty_items else '') # 输出结果 print(required_list)
代码说明
- 分组拆分:使用列表推导式结合步长为3的
range,将原列表拆分为多个三元组分组,确保每个分组包含连续的3个元素。 - 分组处理:遍历每个分组,先筛选出组内的非空元素;由于原数据中每个分组最多仅存在一个非空元素,直接取第一个非空元素即可;若分组全为空,则添加空字符串到结果列表。
内容的提问来源于stack exchange,提问作者Mohit
相关产品推荐
相关产品推荐

