如何将嵌套元组列表转换为元组列表并移除'0'且调整元素顺序
解决方案:嵌套元组列表的转换与元素调整
你的代码问题在于使用了两层for循环遍历外层元组的每个元素,导致原本的每个外层元组被拆成了两个独立的元组处理(比如把5和('RoadAttributes', ...)分别过滤后变成两个元组),同时没有实现将外层元组首元素移至末尾的需求。
针对每个外层元组,我们需要完成三个操作:
- 提取外层元组的首个元素(如示例中的
5) - 对第二个元素(内部嵌套元组)过滤掉值为
0的元素 - 将过滤后的内部元组与首个元素拼接,且把首个元素放在拼接后的元组末尾
正确实现代码(循环版)
list_of_tuples_of_tuples = [(5, ('RoadAttributes', 'egoInformationCompex', 0, 'speedlimit', 'id')), (5, ('RoadAttributes', 'egoInformationCompex', 0, 'speedlimit', 'distanceStdDev'))] result_list = [] for outer_tuple in list_of_tuples_of_tuples: # 提取外层元组的首个元素 first_elem = outer_tuple[0] # 过滤内部元组中的0元素 filtered_inner = tuple(item for item in outer_tuple[1] if item != 0) # 拼接元组并将首个元素移至末尾 new_tuple = filtered_inner + (first_elem,) result_list.append(new_tuple) print(result_list)
简化版(列表推导式)
list_of_tuples_of_tuples = [(5, ('RoadAttributes', 'egoInformationCompex', 0, 'speedlimit', 'id')), (5, ('RoadAttributes', 'egoInformationCompex', 0, 'speedlimit', 'distanceStdDev'))] result_list = [tuple(item for item in outer[1] if item != 0) + (outer[0],) for outer in list_of_tuples_of_tuples] print(result_list)
运行结果
输出与预期完全一致:
[('RoadAttributes', 'egoInformationCompex', 'speedlimit', 'id', 5), ('RoadAttributes', 'egoInformationCompex', 'speedlimit', 'distanceStdDev', 5)]
内容的提问来源于stack exchange,提问作者Dev_Shekhar15
相关产品推荐
相关产品推荐

