背景:工作中需要实现从多个条件中随机抽取几个条件,进行组合查询的功能。而查询的结果需要按原顺序进行判断是否符合查询条件。
分析:这些条件可以放在列表里,这就需要实现一个功能:从一个列表数据里随机抽取数据,并且按原有顺序排序
python的随机函数ranom有一个random.sample(),其功能是:
random.sample的函数原型为:random.sample(sequence, k),从指定序列中随机获取指定长度的片断。sample函数不会修改原有序列。 如果k大于sequence元素个数的话会报错。
而这个函数返回的是随机的序列,与原有序列顺序不一定一致。那么就需要写一个方法,来实现。
过程:假设有一个列表list_array=['a','b','c','d','e','f','g','h'],需要随机抽取5个值,成为一个新的队列,那么我们可以写一个函数如下:
def random_list(list,num):
list_temp=[i for i in range(len(list))] #生成一个和list同样长度临时列表,值分别为list的序号。
list_new=random.sample(list_temp,num) #从临时列表中随机抽几个值。
list_new.sort() #排序,按序号从小到大
list_object=[list[i] for i in list_new] #生成目标序列,里面的值为传入list,对应序号的值
return list_object
这个函数结果如何我们可以验证下。
list_result = random_list(list_array,5)
print(list_result )
运行结果显示为:['a', 'b', 'e', 'f', 'h'], 符合原来顺序,完美。
标签:抽取,Python,random,list,列表,sample,随机,数据 From: https://www.cnblogs.com/jintianniu/p/16982945.html