步骤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) 这个问题看起来很简单,但是我不能为我的生活让它发挥作用.
我有:
装配中的所有可能的C#类都装饰有:
[DebuggerNonUserCode, CompilerGenerated, GeneratedCode("ProtoGen", "2.4.1.473")]
public sealed class thing : GeneratedMessageLite<thing, thing.Builder>
Run Code Online (Sandbox Code Playgroud)我想要做的就是使用我在汇编文件中知道的解析这些数据包.简单?可能,但不管我做什么,实际上没有任何东西被解析.
以下是许多可能类之一的示例:
[DebuggerNonUserCode, CompilerGenerated, GeneratedCode("ProtoGen", "2.4.1.473")]
public sealed class Thing: GeneratedMessageLite<Thing, Thing.Builder>
{
// Fields
private static readonly string[] _thingFieldNames = new string[] { "list" };
private static readonly uint[] _thingFieldTags = new uint[] { 10 };
...
public static Builder CreateBuilder()
{
return new Builder();
}
...
public static thing ParseFrom(ByteString data)
{
return CreateBuilder().MergeFrom(data).BuildParsed();
}
...
public override void WriteTo(ICodedOutputStream output)
{
int …Run Code Online (Sandbox Code Playgroud)