我希望你们都做得很好!
所以我想从一个列表中随机选择6个人组成5个小组,然后将这6个选择的名字附加到特殊的小组中。例如:如果a,b,c,d,e,f是选择的前6个名字,将这些名字附加到group1;在group1包含6个名字之后,接下来的6个名字->附加到group2;以此类推,直到我有5组6个人。
我希望您能理解我,并希望您能提供帮助:)
我的代码:
import random
names = [30 names i dont wanna share]
group1 = list()
group2 = list()
group3 = list()
group4 = list()
group5 = list()
def choosegroup():
def chooserandom():
return(random.choice(names))
def creategroup():
for i in range(1,7):
chosed = chooserandom()
names.remove(chosed)
#while(chosed in group1):
#print('Ups')
#print(chosed + ' already chosed')
# chosed = chooserandom()
#print(chosed)
group1.append(chosed)
#print('Group 1:' + '\n' + str(group1) + '\n')
createdgroup = creategroup()
print(group1)
for i in range(1,6):
print(f'Group {i}')
choosegroup()
group1.clear()发布于 2020-05-09 01:38:00
random.shuffle(names)
groups = [ names[i:i+6] for i in range(0, len(names), 6) ]现在groups[0],groups[1]等是你的6人小组。
发布于 2020-05-09 01:35:27
一旦您有了名称列表,为了将它们分成随机的组,我会使用numpy
import numpy as np
groups = np.array(names)
np.shuffle(groups)
groups = np.reshape(groups, (5,6))作为使用数字而不是名称的示例
>>> names = np.arange(30)
>>> names
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29])
>>> np.random.shuffle(names)
>>> names
array([ 8, 18, 23, 7, 25, 14, 11, 20, 13, 24, 15, 26, 19, 21, 12, 17, 0,
6, 3, 10, 29, 9, 16, 28, 22, 5, 1, 4, 27, 2])
>>> np.reshape(names, (5,6))
array([[ 8, 18, 23, 7, 25, 14],
[11, 20, 13, 24, 15, 26],
[19, 21, 12, 17, 0, 6],
[ 3, 10, 29, 9, 16, 28],
[22, 5, 1, 4, 27, 2]])发布于 2020-05-09 01:47:37
您可以从全局变量访问它们,如下所示:
globals()[f"group{i}"]尽管从字典中存储和检索它们是优选的。
您可以重写代码,如下所示:
import random
from collections import defaultdict
names = [30 names i dont wanna share]
groups = defaultdict(list)
def choosegroup(group_name):
def chooserandom():
return(random.choice(names))
def creategroup(group_name):
for i in range(1,7):
chosed = chooserandom()
names.remove(chosed)
groups[group_name].append(chosed)
createdgroup = creategroup()
print(group_name, "\n", group[group_name])
for i in range(1,6):
print(f'Group {i}')
group_name = f"group{i}"
choosegroup(group_name)
groups[group_name].clear()https://stackoverflow.com/questions/61684727
复制相似问题