Python:当变量在列表中时,返回列表中的下一个最大整数

时间:2018-01-31 03:33:52

标签: python list

我正在编写一个程序来过滤坐标,并根据随机数据和更改数据确定坐标是否是安全位置。如果y位置已经在列表中,我当前正在递增1并移动到下一个位置。

我想知道你有:

a = [1,3,5,6,2]
y = 2

有没有办法返回列表中不存在的下一个最大整数。例如,在上面它将返回4.如果是这样,这将证明比每次递增1更快。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:1)

如果您对列表进行排序,则可以使用二进制搜索快速获得答案。 bisect_right函数将返回您搜索的数字的索引,如果数字len(a)是列表中最大的,则返回>=

>>> a.sort()
>>> a
[1, 2, 3, 5, 6]
>>> import bisect
>>> bisect.bisect_right(a, 2)
2
>>> bisect.bisect_right(a, 4)
3
>>> bisect.bisect_right(a, 7)
5