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