(重新编辑) 例如,我有一个类似列表的数组:
l = [0.3, 2.3, 3.1, 4.5] # value can be any numeric type
然后给定数字1.2
(在0.3 and 2.3
之间),应返回索引1
,并给定数字3.3
,在{{1}之间},应该返回索引3.1 and 4.5
,对于小于3
的值,应该返回索引0.3
,等等。
基本上,对于任何输入值,都取决于它所属的bin,并返回该bin的索引。
我希望不要使用0
语句,因为列表中的项目数量可能很大。
我想应该在某个地方问这个问题,但是我找不到它。
(顺便说一句,实际上我记得if else
中有一个内置函数可以解决问题,但是我再也回想不起来了……)
答案 0 :(得分:1)
>>> l.index(round(1.2))
0
>>> l.index(round(3.3))
2
假定正常的舍入规则。
答案 1 :(得分:0)
也可以使用数学库中的下限函数。
>>> l.index(floor(1.2))
0
答案 2 :(得分:0)
其他答案假设我们已订购第1步数组。在一般形式下,您可以使用以下内容:
# for 1.5
l.index(max(x for x in l if x < 1.5))
# output: 0
# for 2.5
l.index(max(x for x in l if x < 2.5))
# output: 1
警告:我认为数据中没有重复数据并且已对其进行排序