【问题标题】:How can I convert a list with sublist into a uniform list (flattening)?如何将带有子列表的列表转换为统一列表(展平)?
【发布时间】:2020-07-05 11:48:54
【问题描述】:

我有一个坐标列表如下:

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)]

这只是一个例子,我有一个巨大的输出,不知道这些嵌套列表在哪里,里面有多少坐标。但整体结构是一样的。

谢谢。

【问题讨论】:

  • 请重复介绍,尤其是how to ask。网上有很多关于扁平化列表的参考资料;我们希望您发布您的编码尝试。

标签: python list flatten


【解决方案1】:

您可以使用列表推导:

[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)]

【讨论】:

    猜你喜欢
    • 2021-08-21
    • 1970-01-01
    • 1970-01-01
    • 2016-01-26
    • 2019-10-18
    • 2020-02-25
    • 2019-08-08
    • 1970-01-01
    • 2012-04-24
    相关资源
    最近更新 更多