金天牛

导航

Python实现从一个列表数据里随机抽取数据,并且按原有顺序排序

背景:工作中需要实现从多个条件中随机抽取几个条件,进行组合查询的功能。而查询的结果需要按原顺序进行判断是否符合查询条件。

分析:这些条件可以放在列表里,这就需要实现一个功能:从一个列表数据里随机抽取数据,并且按原有顺序排序

           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'], 符合原来顺序,完美。

posted on 2022-12-14 18:35  金天牛  阅读(1870)  评论(0编辑  收藏  举报