比较列表中的每个值与其他列表中的两个值

穆罕默德

我正在尝试使用元素的z和我拥有的高程在水平之间定位元素。

当elemz中的元素在列表levElev的两个值之间时,我需要获取较低的值(较低的海拔)。例如:元素z = 1000> elev(0)和<elev(4000)。在这种情况下,我需要附加elev(0)而不是该元素的z 100。

因此,如果我的海拔是:

[-4000, 0, 4000, 9600, 17600, 26600, 33600]

我的元素具有以下z:

[-3000, -4000, 1, 18000, 1000, 7000, 27000 , 33600 , 40000, 3500, 5000]

最后,我需要以下列表:

-4000, -4000, 0, 17600,0 ,4000 ,26600 ,33600 ,33600 ,0 ,4000

我尝试了以下方法:

levElev = [-4000, 0, 4000, 9600, 17600, 26600, 33600]
elemZ = [-3000, -4000, 1, 18000, 1000, 7000, 27000 , 33600 , 40000, 3500, 5000]

for z in elemZ:
    lowestElev = []
    for i in range(0, len(levElev)):
        for e in levElev:
            if z >= e[i] and z<e[i+1]:
                lowestElev.append(e)
        

OUT = lowestElev
史蒂夫

这是适用于所有值的版本:

levElev = [-4000, 0, 4000, 9600, 17600, 26600, 33600]
elemZ = [-3000, -4000, 1, 18000, 1000, 7000, 27000 , 33600 , 40000, 3500, 5000]

lowestElev = []
for z in elemZ:
    for i in range(0, len(levElev) - 1):
        if z < levElev[i+1]:
            lowestElev.append(levElev[i])
            break
    else:
        lowestElev.append(levElev[-1])

结果:

[-4000, -4000, 0, 17600, 0, 4000, 26600, 33600, 33600, 0, 4000]

这个else窍门是一件很棒的事情。Python具有并非所有语言都具备的功能,这是很酷的事情。它说:“如果您在整个迭代过程中都进行了此操作,则永远不要调用break

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

通过比较每种类型的值,从其他两个其他类型的列表中创建一个新列表

根据其他两个列表中的值创建列表

如何比较两个列表python中每个值的索引

在Python中比较两个列表中的值

将两个LinkedHashMaps与列表中的值进行比较

比较下拉列表中的两个值

如何根据Google表格中其他两个单元格的比较,使一个单元格返回值列表之一?

在迭代两个列表的同时获取列表列表中的项目以与值进行比较

如何遍历一列,将每个值与其他两个固定单元格中的值相乘?

将对象数组添加到数组列表中,并根据一个属性值与其他数组列表进行比较并过滤结果

如何比较两个表并用其他表中的值替换空值

比较两个列表,如果相等则替换第三个列表中的值

列表理解中的两个值

减去列表中的两个值

Python Itertools在两个列表中。从每个列表中获得大于1的值

比较两个列表,并将列表一中的值替换为列表2中的值

比较两个列表变量后,Android 在列表中获取错误值

将两个列表与字典进行比较,并使用Python打印出不在列表中的值?

如何比较 Python 中的两个列表列表并找到匹配值

Python比较两个列表的值

比较两个列表中的值并从第三个列表中返回相似或最接近的值

为两个列表中的每个值创建带有行的列表/矩阵

在每个列表项中具有两个值的列表

比较数组中的值与其他所有值

根据df中其他两个列的比较设置列值

根据R中其他两个列的比较生成新的列值

使用列表理解替换列表中的两个值?

交换列表列表中的两个值(python)

迭代两个列表中的每个值,然后将它们放入公式中