文章

bisect的用途/random.seed以及random.randrange

到这一节网上已有的资源就已经开始逐渐变少了
其实bisect非常简单好用,好用,好用。

import bisect

def grade(score, points=[60, 70, 80, 90], grades='FDCBA'):
    i = bisect.bisect(points, score)#返回传入的score分数在points里对应的序号(只有4个序号)赋值给i

    print(grades[i])
    return grades[i]
def add_point():
    points = [60, 70, 80, 90]
    bisect.insort(points,65)
    print(points)#打印结果你看看,他自己知道按排序插入到列表里,不会乱插入


if __name__ == '__main__':

    [grade(score) for score in [33, 99, 77, 70, 89, 90, 100]]
    add_point()

###################################################################################################
###################################################################################################

a = [1, 4, 6, 8, 12, 15, 20]
position = bisect.bisect(a, 23)#如果数字存在,则返回数字所在的序号,从1开始不是从0开始,如果不存在,则返回应该插入的位置
bisect.insort(a,25)#insort方法直接插入元素25到a列表.且插入的是排序应该在的地方,而且他的速度比a.insert要快(敲黑板)
print(position)
print(a)
======================
7
[1, 4, 6, 8, 12, 15, 20, 25]

接下来我们看看random的一个新玩法,random.seed以及random.randrange

SIZE = 7
random.seed(8255)#seed()方法改变随机数生成器的种子,确定后每次随机出来的数字都是一样的
mylist = []
for i in range(SIZE):
    new_item = random.randrange(SIZE * 2)
    bisect.insort(mylist, new_item)#保证按升序的排序插入
    print('%2d ->' % new_item, mylist)
---#每一次运行程序,值是不变的,都是如下这些
 6 -> [6]
 9 -> [6, 9]
 6 -> [6, 6, 9]
 7 -> [6, 6, 7, 9]
10 -> [6, 6, 7, 9, 10]
 2 -> [2, 6, 6, 7, 9, 10]
 5 -> [2, 5, 6, 6, 7, 9, 10]
原文来自:bisect的用途/random.seed以及random.randrange,尊重自己,尊重每一个人;转发请注明来源!
0 0

发表评论