深入Python(5):random与range

来源:互联网 发布:ie右下角弹出淘宝广告 编辑:程序博客网 时间:2024/04/30 23:10

一、range()内建函数

range(start,stop[, step])
返回列表

复制代码
>>> range(10)[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]>>> range(1, 11)[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]>>> range(0, 30, 5)[0, 5, 10, 15, 20, 25]>>> range(0, 10, 3)[0, 3, 6, 9]>>> range(0, -10, -1)[0, -1, -2, -3, -4, -5, -6, -7, -8, -9]>>> range(0)[]>>> range(1, 0)[]
复制代码

 下面一个实例实现冒泡排序:

复制代码
"""实现冒泡排序"""lis = [15,10,23,6,11,105,70,2,54,21,8]for i in range(len(lis)-1,0,-1):    for j in range(0,i):        if lis[j]>lis[j+1]:            lis[j],lis[j+1] = lis[j+1],lis[j]print lis   #[2, 6, 8, 10, 11, 15, 21, 23, 54, 70, 105]
复制代码

当然比起强大的Python内建函数,冒泡排序就显得臃肿了,可以使用sort()来实现上面的排序:

复制代码
"""sort()的实现效果"""lis2 = [15,10,23,6,11,105,70,2,54,21,8]lis2.sort()print lis2  #[2, 6, 8, 10, 11, 15, 21, 23, 54, 70, 105]
复制代码

在我另一篇博文:深入Python(1): 字典排序 关于sort()、reversed()、sorted()、cmp()等,有详细的讲解。

关于range()这里不再累述,官网文档讲的很详细。


推荐阅读:http://www.cnblogs.com/buro79xxd/archive/2011/05/23/2054493.html



二、random模块

Python中的random模块用于生成随机数。

这里不再啰嗦了,最好看看文档,不过这里推荐阅读:http://www.cnblogs.com/yd1227/archive/2011/03/18/1988015.html

这里做个小实验,关于range()和random的随机算命小程序:

复制代码
"""如题,输入5项自己的兴趣爱好,然后随机抽取20下,统计随机出现次数的最大数,依据此作为最后结果"""def result():    love_list = []              #爱好列表    count = 5                   #列表元素个数(同时作为循环计数)    while count>0:        love = raw_input(u'请选择你5项喜欢的做的事情:(还剩%s项)'%count)        love_list.append(love.decode('utf-8'))      #解码        count-=1    random.shuffle(love_list)                       #元素打乱,重新洗牌    print '****随机统计,通过随机出现次数最多者为依据,结果在于人品****'    i = 0                               #循环计数    lis = []                            #循环后兴趣爱好列表    while i<20:        s= random.choice(love_list)     #选取范围        lis.append(s)        i+=1    max=0                               #列表元素出现最多的次数    what = u''                          #列表元素出现最多的次数时对应的元素    for obj in lis:        if lis.count(obj)>max:            max = lis.count(obj)            what = obj    if max:        print '综上:你最适合:%s' %(what.decode('UTF-8').encode('GBK') )   #下一步:Python经典问题:中文乱码的研究       result() 
复制代码

今天人品很好,抽了个让我满意的答案:

 

三、感悟:关于学完就忘

相信很多人和我一样,对于知识的学习,尤其是一门编程语言,总是学完就忘,十分苦恼。

不过这里,通过我多次的跌倒总结如下,或许能够巩固知识:

(1)、好记性不如烂笔头,多写技术博客,多总结,贵在总结

(2)、烂笔头不如学而时习之,但是很多人不想时习之,因为大多数对于学过的东西就不再那么有好奇心了,但是如果转换一个观念,或许就能激发兴趣去复习。如:

  (2.1):以待面试,给自己施压
  (2.2):尝试从中抽离没有挖掘的价值知识
  (2.3):以”入门--深入--精通“ 来划分阶段,实现阶段性学习与复习

(3)、最好能学以致用,结合到自己工作中,或者写个小demo

还记得”一万小时定律“吗?

要成为某个领域的专家,需要10000小时,按比例计算就是:如果每天工作四个小时,一周工作五天,那么成为一个领域的专家至少需要十年。这就是所谓的一万小时定律。

勤奋努力的学习加上自己不断总结、自省,一套好的学习方法,我想要不得1万个小时吧?

在天朝,最好不要等十年去造就一个伪专家!

标准库random实现了一个随机数生成器

0 0