You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于运算符与数字列表生成无重复元素的所有公式排列?

解决方案

要生成所有符合要求的公式,核心是分别生成数字的全排列和运算符的全排列,再将两者交替拼接即可。Python的itertools.permutations正好能满足不重复元素的排列需求,因为它会返回所有元素的无重复排列组合。

具体实现代码

import itertools

operators = ['+', '-', 'x']
numbers = [4,5,6,9]

# 生成所有数字的全排列(4个数字不重复)
num_perms = itertools.permutations(numbers)
# 生成所有运算符的全排列(3个运算符不重复)
op_perms = itertools.permutations(operators)

# 拼接所有可能的公式
formulas = []
for nums in num_perms:
    for ops in op_perms:
        # 交替拼接数字和运算符:num1 op1 num2 op2 num3 op3 num4
        formula_parts = []
        for n, o in zip(nums[:-1], ops):
            formula_parts.append(str(n))
            formula_parts.append(o)
        formula_parts.append(str(nums[-1]))
        formula = ''.join(formula_parts)
        formulas.append(formula)

# 打印部分结果验证
for f in formulas[:5]:
    print(f)

代码说明

  • itertools.permutations(numbers):生成4个数字的所有不重复排列,比如(4,5,6,9)、(4,5,9,6)、(9,4,5,6)等,共4! = 24种。
  • itertools.permutations(operators):生成3个运算符的所有不重复排列,比如('+','-','x')、('-','+','x')等,共3! = 6种。
  • 拼接逻辑:把每个数字排列的前3个数字分别和运算符排列的3个运算符配对,最后加上第4个数字,形成完整的公式字符串。
  • 最终总共有24 * 6 = 144种不同的公式,完全覆盖你需要的所有组合。

示例输出

运行代码后,前5个结果类似:

4+5-6x9
4+5x6-9
4-5+6x9
4-5x6+9
4x5+6-9

内容的提问来源于stack exchange,提问作者Nick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 03:43:19