所有关于python3中的列表

时间:2017-06-05 13:38:57

标签: list python-3.x

我的代码是:

    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)而不创建两个像我这样的新名单?

非常感谢你。

1 个答案:

答案 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)]

这将始终返回最接近相对插入点的smallbig中的值。

关于bisect_right

  

返回一个插入点,该插入点位于列表中项目的任何现有条目之后(右侧)。

  • 注意:你不应该将list作为python的一部分。使用lst或类似名称。