相关疑难解决方法(0)

仅给出子列表的数量(长度可变),显示列表的所有可能分组

问题

步骤1:给定一个数字列表,仅给出所需组的最终数量,生成所有可能的分组(按顺序).

例如,如果我的数字列表是1到4,并且我想要2个最终组,则可能性为:

[1], [2,3,4]

[1,2], [3,4]

[1,2,3], [4]
Run Code Online (Sandbox Code Playgroud)

第2步:对这些组执行算术运算.

例如,如果我们选择添加,最终结果将是:

1 + 234 = 235
12 + 34 = 46
123 + 4 = 127
Run Code Online (Sandbox Code Playgroud)

先前的研究和类似的问题

我已经在SO和其他地方看到了很多关于涉及可变数量的组的问题的例子,它们使用范围和for循环,a la:

print [num_list[i:i+groups] for i in range(0,len(num_list),groups)]
Run Code Online (Sandbox Code Playgroud)

但这与我想要的相反 - 在那里,除了最后一组之外,组本身的长度是固定的,并且组的数量是振荡的.

这不是家庭作业,只是我遇到的一个有趣的问题.理想情况下,我需要能够迭代这些单独的子列表以执行数学运算,因此它们也需要被捕获.

我有一种感觉,解决方案将涉及itertools,但我似乎无法弄清楚组合方面的组合.

编辑/扩展第2步

如果我想在每个分区上执行不同的操作,我仍然可以采用相同的方法吗?而不是仅仅指定int.添加,我能以某种方式执行所有主要4个操作的另一个组合吗?即:

symbol_list = ['+','-','*','/']
for op in symbol_list:
   #something
Run Code Online (Sandbox Code Playgroud)

我最终会有以下可能性:

1 + 2 * 34
1 * 2 - 34
1 / 2 + 34
etc.
Run Code Online (Sandbox Code Playgroud)

操作顺序可以忽略.

最终解决方案

#!/usr/bin/env …
Run Code Online (Sandbox Code Playgroud)

python math grouping list

12
推荐指数
3
解决办法
2230
查看次数

标签 统计

grouping ×1

list ×1

math ×1

python ×1