我正在尝试将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()函数使用的多个参数? sort()函数如何使用这些多个值?
key=operator.itemgetter(1)
做了什么?这是排序的基础,所以在这种情况下,cost
的多值返回,它将使用c
的值吗?
有没有办法在C#中执行此操作?
答案 0 :(得分:0)
使用sorted
有点奇怪。您可以通过简单的if语句轻松替换它。甚至更奇怪的是,cost
仅返回c
作为返回元组的第二个值。在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
}
(未测试的)