对于列表的循环行和列

时间:2019-07-07 09:46:01

标签: c# list

我是C#的新手,并且列表中的for循环存在问题。 我有一个列表,其中包含从0到7的数字(称为alpha)。

alpha0=1
alpha1=2
alpha2=3
...
alpha7=8

现在,我想以这种方式创建一个包含所有这些alpha的矩阵,然后我想对其进行转置:

IMG1

我试图直接编写转置的代码,但是它给了我错误或者更好的是我错了语法(请参阅代码的最后一个字符串)。有人可以帮我吗?

我将起始列表称为alpha列表。

 List<List<double>> arr = new List<List<double>>();
 for (int col = 0; col < 8; col++)
   for (int row = 0; row < 7; row++)
      arr[col, row].Add(startinglist[col]);

2 个答案:

答案 0 :(得分:1)

尝试以下代码:

  var size = 8;
  var alpha = Enumerable.Range(1, size).ToArray();
  var matrix = new int[size, size + 1];
  for (int i = 0; i < size; i++)
  {
    // Assign values on the diagonal.
    matrix[i, i] = alpha[i];
    matrix[i, i + 1] = 1 - alpha[i];
  }

答案 1 :(得分:0)

尝试一下:

var size = 8;
int[] alpha = Enumerable.Range(1, size).ToArray();
int[][] C = new int[size - 1][];

for(int i = 0 ; i < size - 1; i++)
{
  C[i] = new int[size];
  C[i][i] = alpha[i];
  C[i][i + 1] = 1 - alpha[i + 1];
}

编辑: 由于您已经将Alpha定义为列表,因此可以使用以下方法:

Edit2: 将int更改为double:

double[][] C = new double[alpha.Count - 1][];

for(int i = 0 ; i < alpha.Count - 1; i++)
{
  C[i] = new double[alpha.Count];
  C[i][i] = alpha[i];
  C[i][i + 1] = 1 - alpha[i + 1];
}