我有一个List<int>,我想将其转换为List<double>.有没有办法做到这一点,除了循环List<int>并添加到这样的新List<double>:
List<int> lstInt = new List<int>(new int[] {1,2,3});
List<double> lstDouble = new List<double>(lstInt.Count);//Either Count or Length, I don't remember
for (int i = 0; i < lstInt.Count; i++)
{
lstDouble.Add(Convert.ToDouble(lstInt[0]));
}
Run Code Online (Sandbox Code Playgroud)
这有什么奇特的方法吗?我正在使用C#4.0,所以答案可能会利用新的语言功能.
我如何将此代码转换为n嵌套for循环:
int num = 4;
for (int i = 0; i <= num; i++)
{
for (int j = 0; j + i <= num; j++)
{
for (int k = 0; i + j + k <= num; k++)
{
for (int l = 0; i + j + k + l <= num; l++)
{
Console.WriteLine(i + " " + j + " " + k + " " + l);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
因此,如果num为2,则只有2个for循环; 我和j.
这不是家庭作业,我希望迭代地做.每个Console.WriteLine()都需要像元素一样存储在一起. …
我的最终目标是将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)]
Run Code Online (Sandbox Code Playgroud)
这是我到目前为止的转换:
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 …Run Code Online (Sandbox Code Playgroud) 我想要一个执行此操作的函数:
private static dynamic Zero(Type T)
{
if (T == typeof(Decimal))
{
return Decimal.Zero;
}
else if (T == typeof(Double))
{
return new Double();
}
else if (T == typeof(Int64))
{
return new Int64();
}
...
}
Run Code Online (Sandbox Code Playgroud)
但对于所有类型.我想避免写一个巨大的其他if语句.有没有其他方法可以做到这一点?我正在使用C#4.0.