Python - 从列表中取随机数

时间:2021-05-31 18:41:59

题目是:从一个有序列表中任取几个值组成新的列表

以下有2种思路去实现

1. 把那列表任意排列,截取尾巴上面的指定长度

import random

total = 100
onetime = 7

x_list = [i for i in range(1, total+1)]

# 这个是打乱一个列表的方法,shuffle是random模块-->Random类-->shuffle方法
# _inst = Random()
# shuffle = _inst.shuffle
# 通过这来调用,又get到一个新技能
random.shuffle(x_list)

new_list = x_list[(-1 * onetime):]

print(sorted(new_list))

2. 每次都从列表里面随机取一个数,连取7次

import random

total = 100
onetime = 7

old_list = [i for i in range(1, total+1)]
new_list = []

for _ in range(0, onetime):
    # 这里的k可以为任意整数,返回的是一个列表,但是列表里面有重复值,所以我每次只取一个
    a = random.choices(old_list, k=1)
    num = a[0]
    old_list.remove(num)
    new_list.append(num)

print(sorted(new_list))

大家觉得哪种好呢?下面为一个彩蛋

random.sample(range(1, n+1), m)