想象一下像下面这样的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应用程序
答案 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;