今天上微博,发现一个好友发一条微博是:a,j,g,h,k,i,l,f,v,b,2,5,x从中随机取出几个,按照原序列顺序输出,怎么整?
想最近我刚自学Python于是不禁想练手一把实现个试试,过程如下:
第一步:
我分析如果从一堆数里随机抽取几个,并且按原来的顺序输出的话,那么至少要随机两次才能完成,第一次随机的值是确定随机几个数,第二次随机是确定随机的值。
第二步:
随机抽取几个可以用random.randint(1,n)这个函数来实现,这个n代表所要随机列表的长度。
第三步:
上一步出来一个数决定此次随机出几个值出来,现在假定是n,再次随机就是从列表里随机抽取n个值这个可以用random.sample(dict,n)这个方法实现,这个函数可以传入一个字典,和一个数字返回一个列表。
第四步:
得到的结果需要按原来的顺序输出,那么存储就需要考虑用dict了,因为字典的k-v特性可以实现找到原来的顺序,我具体的实现如下:
import random #random_number(a)函数的功能传入一个数,返回1到这个数的随机数 def random_number(a): return random.randint(1,a) #print(random_number(4)) #random_list(a,b)函数的功能,传入一个字典a,和一个数值b, #1<=b<=a的长度,返回一个拥有b的个数值是a中的key值的list def random_list(a,b): return random.sample(list(a),b) a={1:'a',2:'j',3:'g',4:'h',5:'k',6:'i',7:'l',8:'f',9:'v',10:'b',11:2,12:5,13:'x'} b=len(a) #print(random_list(a,b)) #random_dictvalue函数的功能,传入一个字典a和一个列表b,返回以b为key,a中对应的value的值 def random_dictvalue(a,b): b.sort() for i in b: print(a.get(i),end=' ') print(random_dictvalue(a,random_list(a,random_number(b)))) # result >>> ================================ RESTART ================================ >>> a f None >>> ================================ RESTART ================================ >>> g i None >>> ================================ RESTART ================================ >>> a j h l v b 2 5 x None