Python 如何使用对分对值进行分类?
我有不同的高度(z),我想分为不同的层。从网上看,bisect_left函数似乎是一种很好的方法,可以在列表中找到一个值应该出现的位置。我已经将每个层的名称定义为列表中给定z值的位置。例如,z=15.75对应于第1层。我已经编写了下面的函数来实现这一点Python 如何使用对分对值进行分类?,python,sorting,bisect,Python,Sorting,Bisect,我有不同的高度(z),我想分为不同的层。从网上看,bisect_left函数似乎是一种很好的方法,可以在列表中找到一个值应该出现的位置。我已经将每个层的名称定义为列表中给定z值的位置。例如,z=15.75对应于第1层。我已经编写了下面的函数来实现这一点 def layer_update(particle): layers = [20,15.75,14.75,10.5,9.5,5.25,4.25] z = particle["z"] if z in layers: particle["
def layer_update(particle):
layers = [20,15.75,14.75,10.5,9.5,5.25,4.25]
z = particle["z"]
if z in layers:
particle["layer"] = bisect.bisect_left(layers,z)
else:
particle["layer"] = bisect.bisect_left(layers,z) - 1
return(particle)
之所以包含if语句,是因为我的z值通常是图层列表中包含的值。然而,当我运行该行时
layers = [20,15.75,14.75,10.5,9.5,5.25,4.25]
bisect.bisect_left(layers,20)
我希望得到0,但我得到7。我已经阅读了对分函数的文档,不明白为什么会出现这种情况。有人能帮忙吗
另外,我相信这可能是因为层列表是按降序排列的,对于我的代码的其他部分来说,这种情况很重要,所以理想情况下,任何解决方案都会保持列表的原样
对分
模块中的所有内容都基于列表按升序排序的假设。它完全是用Python编写的,因此您可以复制它并反转所有的比较运算符,以获得您想要的效果。@jasonharper,这很有意义,谢谢。我还处于python教育的早期阶段,所以这可能有点挑战性,有没有一种方法可以使用对分输出对这些值进行分类?或者可能是完全不同的库函数?请参阅相关-可能重复。