Python實現從一個列表數據里隨機抽取數據,並且按原有順序排序


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM