如何将带有子列表的列表转换为统一列表(展平)?

How can I convert a list with sublist into a uniform list (flattening)?

我有一个坐标列表如下:

temp = [((20.0, 15.076858380630263), (20.0, 16.92468707613784)), (5.430012747754155, 3.3503228946034667), (7.364023506893538, 7.013767290971433), (11.932318028181742, 8.766709807679579), ((12.839934501779176, 11.300824688102473), (13.285114114146213, 14.10378570292717),(14.839934501779176, 16.300824688102473))]

如您所见,有一些带有多个坐标的嵌套列表,所以我希望它看起来像下面这样:

temp =[(20.0, 15.076858380630263), (20.0, 16.92468707613784), (5.430012747754155, 3.3503228946034667), (7.364023506893538, 7.013767290971433), (11.932318028181742, 8.766709807679579), (12.839934501779176, 11.300824688102473), (13.285114114146213, 14.10378570292717), (14.839934501779176, 16.300824688102473)]

这只是一个例子,我有一个巨大的输出,不知道这些嵌套列表位于何处以及其中有多少坐标。但整体结构是一样的。

谢谢。

你可以使用列表理解:

[j  for i in temp for j in (i if isinstance(i[0], tuple) else [i])]

输出:

[(20.0, 15.076858380630263),
 (20.0, 16.92468707613784),
 (5.430012747754155, 3.3503228946034667),
 (7.364023506893538, 7.013767290971433),
 (11.932318028181742, 8.766709807679579),
 (12.839934501779176, 11.300824688102473),
 (13.285114114146213, 14.10378570292717),
 (14.839934501779176, 16.300824688102473)]