我正在尝试使用元素的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] 删除。
我来说两句