python c#_Python到C#代码解释

我的最终目标是将python中的以下代码转换为C#,但我想通过学习python语法来实现自己.我知道代码是递归的.

该代码产生具有k个变量的n次多项式.更具体地说,每个变量的指数列表.

def multichoose(n,k):

if k < 0 or n < 0: return "Error"

if not k: return [[0]*n]

if not n: return []

if n == 1: return [[k]]

return [[0]+val for val in multichoose(n-1,k)] + \

[[val[0]+1]+val[1:] for val in multichoose(n,k-1)]

这是我到目前为止的转换:

public double[] MultiChoose(int n, int k)

{

if (k < 0 || n < 0)

{

throw new Exception();

}

if (k == 0)

{

return [[0]*n]; // I have no idea what the [[0]*n] syntax means

}

if (n == 0)

{

return new double[0]; // I think this is just an empty array

}

if (n == 1)

{

return new double[1] {k}; // I think this is just an empty array

}

//Part I don't understand

return [[0]+val for val in MultiChoose(n-1,k)] + \

[[val[0]+1]+val[1:] for val in MultiChoose(n,k-1)]

}

我的问题是:如何转换python代码?

解决方法:

我会在C#中使用LINQ来翻译代码:

> []是空列表.

Enumerable.Empty()

> [x]是包含单个项目x的列表.

Enumerable.Repeat(x, 1)

> [[0] * n]是包含包含n个0副本的列表的列表.

Enumerable.Repeat(Enumerable.Repeat(0, n), 1)

> [Z中Y为X]是列表理解.

from Y in Z select X

- or -

Z.Select(Y => X);

> X Y(其中X和Y是列表)是列表串联.

Enumerable.Concat(X, Y)

MultiChoose的签名是:

public IEnumerable> MultiChoose(int n, int k);

标签:python,c

来源: https://codeday.me/bug/20190518/1130705.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值