Python fstring和append()

2024-05-19 09:47:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我希望你们都做得很好

所以我想从列表中随机选择5组6人,然后将这6个选择的名字附加到特殊组中。 示例:如果a、b、c、d、e、f是前六个选定名称->;将这些名称附加到group1; 在group1包含6个名称之后,接下来的6个名称->;追加到第2组;如此这般,直到我有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()

Tags: ingt名称fornamesdefrangerandom
3条回答

您可以从全局访问它们,例如:

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()

一旦你有了你的名字列表,要把它们分成随机的组,我会用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]])
random.shuffle(names)
groups = [ names[i:i+6] for i in range(0, len(names), 6) ]

现在groups[0]groups[1]等是您的6人小组

相关问题 更多 >

    热门问题