Python:在列表中随机抽取一组无重复元素

Python0167

Python:在列表中随机抽取一组无重复元素,第1张

需求:从列表中,随机抽取" 一组 "无重复元素,返回结果到一个新的列表中。

包:random

函数:random.sample(list, num)

参数说明:list是待抽取的列表,num是抽取的个数;返回值为一个新的列表。

使用如下:

python随机选取n个不同的数字的方法:

1、使用“import random”导入random包

2、通过for语句循环执行n次“random.randint()”语句获取n个随机数并将随机数输入到列表中

n=10示例如下:

3、用set函数去重就可以了

完整代码:

更多Python知识,请关注: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