如何计算含可取值2或3的X的列表的所有可能求和结果
实现方案
我们可以借助Python标准库itertools.product快速生成所有X的取值组合,再计算求和结果,代码如下:
import itertools def calc_all_possible_sums(lst): # 计算非X元素的固定求和值 base_sum = sum(item for item in lst if item != "X") # 统计X的个数 x_num = lst.count("X") # 生成所有X的取值组合,每个位置可选2或3 x_value_combs = itertools.product([2, 3], repeat=x_num) # 拼接所有求和结果转为元组 return tuple(base_sum + sum(comb) for comb in x_value_combs)
测试验证
对示例输入a = [4, 5, "X", "X"]调用函数:
a = [4, 5, "X", "X"] sums = calc_all_possible_sums(a) print(sums)
输出结果为:
(13, 14, 14, 15)
完全匹配要求。
规则适配说明
- 当列表中X数量为0时,
itertools.product会生成1个空组合,最终返回仅包含固定和的1元素元组 - 当X数量为n时,
itertools.product自动生成2n个组合,返回的元组长度自动符合2n的要求
内容的提问来源于stack exchange,提问作者Phil
相关产品推荐
相关产品推荐

