是否可以将C#双列表中的所有元素划分为双列表元素总和(使得总计= 1)

时间:2012-04-04 23:55:24

标签: c# list elements divide

想象一下像下面这样的doube列表

List<double> lstDouble=new List<double>{4,6,2,7,1,1};

所以我想要的是将此列表中的所有元素划分为元素的总和(21)。

所以列表在分割后变为:

lstDouble = {4/21,6/21,2/21,7/21,1/21,1/21}

这意味着元素的新总和= 1

我可以通过迭代等来做到这一点,但我想知道自Matlab以来有什么简短的方法。我的助理教授一直告诉我,学习Matlab并使用它,但我不想要:D我喜欢C#

谢谢。

C#4.0 WPF应用程序

5 个答案:

答案 0 :(得分:9)

var sum = lstDouble.Sum();
var result = lstDouble.Select(d => d / sum);

答案 1 :(得分:4)

您可以使用LINQ执行此操作:

var sum = lstDouble.Sum();
var newLst = lstDouble.Select( x => x/sum );

答案 2 :(得分:2)

使用lambda表达式:

 lstDouble.ForEach(x => x = x/21);

答案 3 :(得分:2)

var sum = lstDouble.Sum();
var result = lstDouble.Select(v => v / sum);

答案 4 :(得分:0)

这是伪代码:

double sum = 0;
for(int i=0; i<array.length; i++)
   sum+=array[i];
for(int i=0; i<array.length; i++)
   array[i]=array[i]/sum;