0

我正在尝试将 Python 程序转换为 C#。我不明白这里正在做什么。

def mincost(alg):
    parts = alg.split(' ')
    return sorted([cost(0, parts, 'G0 '),cost(1, parts, 'G1 ')], key=operator.itemgetter(1))[0]

def cost(grip, alg, p = '', c = 0.0, rh = True):
    if (len(alg) == 0):
        return (postProcess(p),c)

postprocess返回一个字符串

cost返回 sorted() 函数上使用的多个参数?sorted() 函数如何使用这些多个值?

key=operator.itemgetter(1)什么?这是排序的基础,所以在这种情况下,多值返回cost,它会使用 的值c吗?

有没有办法在 C# 中做到这一点?

4

1 回答 1

0

那里的使用sorted有点奇怪。您可以通过简单的 if 语句轻松替换它。更奇怪的是,它cost返回的只是c返回元组的第二个值。In mincost,cost永远不会使用c非默认值调用,因此c总是0.0使排序变得非常多余。但我想关于成本函数有一些缺失的部分。

不过,您可以像这样实现它的功能:

string MinCost (string alg) {
    List<string> parts = alg.split(" ");
    Tuple<string, double> cost1 = Cost(0, parts, "G0 ");
    Tuple<string, double> cost2 = Cost(1, parts, "G1 ");

    if (cost1[1] < cost2[1])
        return cost1[0];
    else
        return cost2[0];
}

Tuple<string, double> Cost (int grip, List<string> alg, string p="", double c=0.0, bool rh=True) {
    if (alg.Count == 0)
        return new Tuple<string, double>(PostProcess(p), c);

    // ... there should be more here
}

(未经测试)

于 2012-11-11T17:25:02.040 回答