如何使用 random.sample() 制作各种列表?

How to make various list using random.sample()?

在此列表中

AIB13seoul= ['김예나','김혜관','노주연','박진수','박희선','양건희','양세비',
             '이예지','전형준','정승기','sangwon','이지현','김강호','김슬기',
             '김용석','김재성','방준원','한유성','한현구','강병우']

我想使用循环创建另外 3 个名为 abc 的随机列表,不重复。 我不习惯使用循环,所以这是我最初尝试的方式:

import random
a = random.sample(AIB13seoul, 7)
list(a)
removed=list(set(AIB13seoul) - set(a))
b = random.sample(removed, 7)
removed1=list(set(removed) - set(b))
c = random.sample(removed1, 6)

这是我正在使用的文件:off-site file

我试过这个:

a=[]
for x in AIB13seoul:
    select=random.sample(AIB13seoul,7)
    a.append(select)

print(a)

但是没用。

您可以使用 numpyrandom 编写一个相当灵活的实现:


import random as rand 
import numpy as np


def split(list, subdivisions):

    l = rand.sample(list, len(list))
    splits = [int(len(l) * split) for split in np.linspace(0, 1, subdivisions + 1)]
    return [ l[splits[i] : splits[i+1]] for i in range(len(splits) - 1)]

split(AIB13seoul, 3)

这导致:

> [['한현구', '김강호', '방준원', '양세비', '박희선', '한유성'],
  ['김재성', '김혜관', '이지현', '양건희', '김슬기', '박진수', '정승기'],
  ['김용석', '노주연', '강병우', '이예지', 'sangwon', '전형준', '김예나']]