【问题标题】:Extract lowest Levels from nested List从嵌套列表中提取最低级别
【发布时间】:2021-06-18 17:52:23
【问题描述】:

我得到了一个不规则的多重嵌套列表,如下所示:

[[[[-109.57138824416198, 33.88133239733474],
   [-109.57106780956572, 33.88137054433046],
   [-109.57102203399924, 33.88110733049322],
   [-109.57134246861581, 33.881069183483866],
   [-109.57138824416198, 33.88133239733474]]],
 [[[-109.53874206509292, 34.03271865867248],
   [-109.5387878420307, 34.03298568681619],
   [-109.53845977734206, 34.0330238343362],
   [-109.538414001351, 34.032756805190026],
   [-109.53874206509292, 34.03271865867248]]],
 [[[-109.53874206509292, 34.03271865867248],
   [-109.53869628939387, 34.032451629408015],
   [-109.53864288285274, 34.03218841550364],
...

因此,您无法判断它可以达到多深或条目处于哪个级别。但是在最低级别上,总是有两个条目(经度和纬度)对于边界框,我需要分别为 Lon 和 Lat 设置最小值和最大值。我的想法是两个去掉所有的子级列表,只剩下元组来处理。

有解决方案的想法吗?

【问题讨论】:

  • 请展示您的尝试。
  • 它们不是元组。
  • 我只是不知道该怎么做,其他问题大多与特定的已知结构有关......

标签: python list nested


【解决方案1】:

试试:

lst = [
    [
        [
            [-109.57138824416198, 33.88133239733474],
            [-109.57106780956572, 33.88137054433046],
            [-109.57102203399924, 33.88110733049322],
            [-109.57134246861581, 33.881069183483866],
            [-109.57138824416198, 33.88133239733474],
        ]
    ],
    [
        [
            [-109.53874206509292, 34.03271865867248],
            [-109.5387878420307, 34.03298568681619],
            [-109.53845977734206, 34.0330238343362],
            [-109.538414001351, 34.032756805190026],
            [-109.53874206509292, 34.03271865867248],
        ]
    ],
    [
        [
            [-109.53874206509292, 34.03271865867248],
            [-109.53869628939387, 34.032451629408015],
            [-109.53864288285274, 34.03218841550364],
        ]
    ],
]


def flatten(lst):
    if isinstance(lst, list):
        if isinstance(lst[0], list):
            for v in lst:
                yield from flatten(v)
        else:
            yield lst


out = list(flatten(lst))
print(out)

打印:

[
    [-109.57138824416198, 33.88133239733474],
    [-109.57106780956572, 33.88137054433046],
    [-109.57102203399924, 33.88110733049322],
    [-109.57134246861581, 33.881069183483866],
    [-109.57138824416198, 33.88133239733474],
    [-109.53874206509292, 34.03271865867248],
    [-109.5387878420307, 34.03298568681619],
    [-109.53845977734206, 34.0330238343362],
    [-109.538414001351, 34.032756805190026],
    [-109.53874206509292, 34.03271865867248],
    [-109.53874206509292, 34.03271865867248],
    [-109.53869628939387, 34.032451629408015],
    [-109.53864288285274, 34.03218841550364],
]

【讨论】:

  • 哇,这看起来不错,尽管我无法确认正确性。结果是合理的。
猜你喜欢
  • 1970-01-01
  • 2021-10-12
  • 2018-06-23
  • 2020-10-22
  • 1970-01-01
  • 2015-01-31
  • 1970-01-01
  • 1970-01-01
  • 2021-08-20
相关资源
最近更新 更多