Python实现嵌套列表多人唯一组合生成及对应特征值累加
实现思路
直接把itertools.combinations作用于原列表的元素,无需拆分姓名、特征后再做匹配,省掉冗余的匹配逻辑,全程用生成器表达式+列表推导完成计算,代码简洁易读。
完整代码示例
import itertools # 示例输入列表 stud_lst = [['Pete', '36', '36', '36', '30'], ['Derek', '31', '21', '31', '20'], ['Tommy', '20', '30', '25', '35']] # 定义需要生成的组合大小 group_sizes = [2, 3] result = [] for size in group_sizes: # 直接生成对应人数的成员组合 for group in itertools.combinations(stud_lst, size): # 拼接组合内所有人名 combined_name = ''.join(p[0] for p in group) # 按位置求和特征值,转成字符串格式 combined_features = [str(sum(int(p[i]) for p in group)) for i in range(1, 5)] result.append([combined_name] + combined_features) # 输出验证 for item in result: print(item)
输出示例
运行上述代码后会得到符合要求的结果,示例输出如下:
['PeteDerek', '67', '57', '67', '50'] ['PeteTommy', '56', '66', '61', '65'] ['DerekTommy', '51', '51', '56', '55'] ['PeteDerekTommy', '87', '87', '92', '85']
内容的提问来源于stack exchange,提问作者Peter Wölfel
相关产品推荐
相关产品推荐

