小编Bre*_*ard的帖子

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

问题

步骤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
查看次数

使用现有的C#类读取Protobuf TCP数据包

这个问题看起来很简单,但是我不能为我的生活让它发挥作用.

我有:

  • 我知道的包含少量数据包的PCAP文件是某种类型的ProtoBuf数据(可能是用protobuf-csharp-port创建的)
  • 装配中的所有可能的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)

c# protocol-buffers

2
推荐指数
1
解决办法
1078
查看次数

标签 统计

c# ×1

grouping ×1

list ×1

math ×1

protocol-buffers ×1

python ×1