根据元素的变化创建一个列表

时间:2018-08-24 09:13:30

标签: python while-loop variance

我想获得一个连续段的列表,这些段是线串的一部分(QGIS,Shapefile),并构建线串的几乎笔直的部分。

此刻,我可以计算分段的方位角并将它们放在列表中。

az_list = [260,263,260,209,245,339,337,343]

因此,起初我想用az_list的元素填充新列表,直到差异很大为止。

示例:

az_list 260、263、260的前三个值构成了线的几乎笔直的部分。我用以下方法检查这三个值的方差:

import numpy as np
np.var([260, 263, 260])    # result: 2.0

最后三个:

np.var([339,337,343])    # result: 6.22...

知道这一点,我可以确定对于var的方差,当var > 0var < 10时,如果该列表为空(将作为起点),则该部分是直的{ 1}}返回math.isnan(np.var(az_list))

我开始将False中的前三个值放入新列表az_list中。使用此代码,我试图使其运行,但它返回一个空列表。

straight_list

最后,想要获得存储直线部分的列表列表,例如:

straight_list = []
while not math.isnan(np.var(straight_list)) and np.var(straight_list) != 0 and np.var(straight_list) < 10:
    for i in az_list:
        straight_list.append(i)

1 个答案:

答案 0 :(得分:0)

我建议您采用以下解决方案:

import numpy as np

az_list = [260,263,260,209,245,339,337,343]

straight_list = []
sublist = []
for az in az_list:
    sublist.append(az)
    if np.var(sublist) > 10:
        if len(sublist) > 2:
            straight_list.append(sublist[:-1])
        sublist = [az]

if len(sublist) > 1:
    straight_list.append(sublist)

print(straight_list)  # [[260, 263, 260], [339, 337, 343]]