Art_ian 2021-06-22 15:50 采纳率: 100%
浏览 1419
已采纳

Python 怎么实现随机分组,要求3~4人一组

请问各位大佬,怎么用python实现随机分组 要求3~4人一组

 

  • 写回答

1条回答 默认 最新

  • CSDN专家-黄老师 2021-06-22 15:52
    关注
    import random
     
     
    # 构建分身数据源(25个分身对象)
    def get_source_data():
        data = []
        for i in range(4):
            data.append({"name":"组长", "role":i}) # role表示分身ID
        for i in range(7):
            for j in range(3):
                data.append({"name": "组员" + str(i), "role": j})
        return data
     
     
    # 进行5次选择,选出5组
    def group_by_random():
        des_list = []
        data_list = get_source_data()
        for i in range(5): # 分5组
            one_list = []
            has_selected = {} # 标记某个人是否已经被添加进当前组中
            while(len(one_list) < 5): # 直到每组中有5个不同的人(组中最多有同一个人的1个分身)
                index = random.randint(0, len(data_list)-1)
                person = data_list[index]
                # 如果这个人(此处不区分“分身”,只区分“人”)没有被添加到当前组中,就添加该分身到组中,同时删除原数据列表中的这个分身对象
                if not has_selected.__contains__(person["name"]): 
                    one_list.append(person["name"])
                    data_list.pop(index)
                    has_selected[person["name"]] = True
            des_list.append(one_list)
        return des_list
     
     
    if __name__ == '__main__':
        for group in group_by_random():
            print("分组:", group)

    如果对你有帮助,可以点击我这个回答右上方的【采纳】按钮,给我个采纳吗,谢谢
     

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥30 Matlab打开默认名称带有/的光谱数据
  • ¥50 easyExcel模板 动态单元格合并列
  • ¥15 res.rows如何取值使用
  • ¥15 在odoo17开发环境中,怎么实现库存管理系统,或独立模块设计与AGV小车对接?开发方面应如何设计和开发?请详细解释MES或WMS在与AGV小车对接时需完成的设计和开发
  • ¥15 CSP算法实现EEG特征提取,哪一步错了?
  • ¥15 游戏盾如何溯源服务器真实ip?需要30个字。后面的字是凑数的
  • ¥15 vue3前端取消收藏的不会引用collectId
  • ¥15 delphi7 HMAC_SHA256方式加密
  • ¥15 关于#qt#的问题:我想实现qcustomplot完成坐标轴
  • ¥15 下列c语言代码为何输出了多余的空格