Python处理三维列表:如何移除最内层方括号及元素分隔逗号
三维列表格式转换实现
问题背景
开发中需处理三维坐标列表,要求移除最内层方括号,将最内层两个数值之间的分隔逗号替换为空格。
原始列表
[ [[2.250922, 48.867699], [2.250805, 48.867744], [2.250688, 48.867699], [2.250688, 48.867611], [2.250805, 48.867566], [2.250922, 48.867611], [2.250922, 48.867699]], [[2.251038, 48.867832], [2.250922, 48.867877], [2.250805, 48.867832], [2.250805, 48.867744], [2.250922, 48.867699], [2.251038, 48.867744], [2.251038, 48.867832]] ]
期望输出格式
[[2.250922 48.867699, 2.250805 48.867744, 2.250688 48.867699, 2.250688 48.867611, 2.250805 48.867566, 2.250922 48.867611, 2.250922 48.867699], [2.251038 48.867832, 2.250922 48.867877, 2.250805, 48.867832, 2.250805 48.867744, 2.250922 48.867699, 2.251038 48.867744, 2.251038 48.867832]]
之前方案的问题
- 普通列表扁平化仅能移除外层括号,无法修改内层元素的分隔格式
- 之前使用的列表推导式
new_list = [[item[0] for item in inner_list] for inner_list in outer_list]仅提取了每个最内层二元组的第一个元素,直接丢失了所有第二个坐标值,因此会缺失全部48.xx开头的数值。
实现方案
你需要的输出是特定格式的字符串,Python原生列表不支持“元素间用空格分隔、移除内层括号”的结构,不需要在列表对象层面做转换,直接遍历拼接字符串即可:
original_list = [[[2.250922, 48.867699], [2.250805, 48.867744], [2.250688, 48.867699], [2.250688, 48.867611], [2.250805, 48.867566], [2.250922, 48.867611], [2.250922, 48.867699]], [[2.251038, 48.867832], [2.250922, 48.867877], [2.250805, 48.867832], [2.250805, 48.867744], [2.250922, 48.867699], [2.251038, 48.867744], [2.251038, 48.867832]]] mid_res = [] for sub_list in original_list: # 将每个坐标对转为空格分隔的字符串 coord_strs = [f"{lon} {lat}" for lon, lat in sub_list] mid_res.append(f"[{', '.join(coord_strs)}]") final_output = f"[{', '.join(mid_res)}]" print(final_output)
注意事项
- 你给出的期望样例中存在一处笔误:
2.250805, 48.867832位置多了一个多余的逗号,上述代码输出的是符合格式逻辑的正确结果,无多余符号。 - 如果后续需要对坐标做数值计算,不要转成上述字符串格式,保留原生嵌套列表结构即可,字符串格式仅适合特定场景的文本输出需求。
内容的提问来源于stack exchange,提问作者sdiv
相关产品推荐
相关产品推荐

