今天上微博,發現一個好友發一條微博是: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