gpt4 book ai didi

c# - Python 到 C# 代码解释

转载 作者:太空狗 更新时间:2023-10-30 01:04:03 25 4
gpt4 key购买 nike

我的最终目标是将以下 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代码?

最佳答案

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

  • [] 是空列表。

    Enumerable.Empty<T>()
  • [x] 是包含单个项目 x 的列表。

    Enumerable.Repeat(x, 1)
  • [[0]*n] 是包含 n 个 0 的列表的列表。

    Enumerable.Repeat(Enumerable.Repeat(0, n), 1)
  • [X for Y in Z] 是一个列表理解。

    from Y in Z select X
    - or -
    Z.Select(Y => X);
  • X + Y(其中 X 和 Y 是列表)是列表串联。

    Enumerable.Concat(X, Y)

MultiChoose 的签名是:

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

关于c# - Python 到 C# 代码解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2128784/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com