如何每次获得随机列表?

Zeh*_*enE 1 python random python-2.7

我正试图从委员会制作3名学生的随机名单(小组委员会).然后,我想打印一个新的随机小组委员会1000次.现在,我的代码是打印相同的小组委员会1000次.我怎样才能解决这个问题?

import random

undergrads = ["ug_1", "ug_2", "ug_3", "ug_4"]
grads = ["g_1", "g_2"]
committee = undergrads + grads

subcommittee = []
for i in range(3):
    add_sub = random.choice(committee)
    subcommittee.append(add_sub)

for j in range(1000):
    print subcommittee
Run Code Online (Sandbox Code Playgroud)

Bah*_*rom 6

发生这种情况是因为您正在创建一个subcommittee包含3个随机成员,然后重新打印随机预定义的列表1000时间(这里会想到xkcd):(这里有一个xkcd)

要解决这个问题,请执

for i in range(1000):
    subcommittee = []
    for i in range(3):
        add_sub = random.choice(committee)
        subcommittee.append(add_sub)
    print subcommittee
Run Code Online (Sandbox Code Playgroud)

你也可以这样做:

for i in range(1000):
    print([random.choice(committee) for _ in range(3)])
Run Code Online (Sandbox Code Playgroud)

或者更好的是,使用random.sample:

for i in range(1000):
    print(random.sample(committee, 3))
Run Code Online (Sandbox Code Playgroud)