我的代码是:
a = 3.5
list = [ 1, 2, 3, 4, 5, 6, 7, 8, 9 ]
bigList = []
smallList = []
for i in list:
if a < i:
bigList.append( i )
else:
smallList.append( i )
print( min( bigList ) )
print( max( smallList ) )
我的问题:是否有一种函数或更聪明的方法来获得比a更小的值和更大的值(例如:如果a = 6.1,较小的值将是6而较大的值将是7)而不创建两个像我这样的新名单?
非常感谢你。
答案 0 :(得分:0)
如果列表已排序,您可以使用bisect
:
import bisect
insertion_point = bisect.bisect_right(lst, a)
small = lst[max(insertion_point - 1, 0)]
big = lst[min(insertion_point, len(lst) - 1)]
这将始终返回最接近相对插入点的small
和big
中的值。
关于bisect_right
:
返回一个插入点,该插入点位于列表中项目的任何现有条目之后(右侧)。
list
作为python的一部分。使用lst
或类似名称。