7

想象一个像下面这样的双重列表

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 并使用它,但我不想 :DI love C#

谢谢你。

C# 4.0 WPF 应用程序

4

5 回答 5

12
var sum = lstDouble.Sum();
var result = lstDouble.Select(d => d / sum);
于 2012-04-04T23:59:35.437 回答
4

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

var sum = lstDouble.Sum();
var newLst = lstDouble.Select( x => x/sum );
于 2012-04-04T23:59:48.013 回答
2

使用 lambda 表达式:

 lstDouble.ForEach(x => x = x/21);
于 2012-04-04T23:58:48.550 回答
2
var sum = lstDouble.Sum();
var result = lstDouble.Select(v => v / sum);
于 2012-04-05T00:00:39.923 回答
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;
于 2012-04-04T23:59:02.357 回答