C#列表清单?
如果我有这个:
List<List> matrix = new List<List>();
我将如何填充它,使它看起来像这样:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
List> matrix = new List>(new []{ new List (new []{0, 0, 0, 0, 0, 0, 0}), new List (new []{0, 0, 0, 0, 0, 0, 0}), new List (new []{0, 0, 0, 0, 0, 0, 0})});
Arnis L.在这里……
只想添加集合可能会使用初始化程序(如果支持.Net 3.0):
var matrix = new List>{ new List{0, 0, 0, 0, 0, 0, 0}, new List {0, 0, 0, 0, 0, 0, 0}, new List {0, 0, 0, 0, 0, 0, 0}};
首先,如何填充单个List
以使其包含零?
你想组成一堆,然后将它们推入包含列表。
我真的会为矩阵避免这种情况。 无法确保每个子列表与其他子列表的长度相同。 如果它不是动态的,那么你应该使用多维数组
int[,] names = new int[7,3];
如果您正在制作矩阵,为什么不使用二维数组呢?
这是初始化不规则列表的一种方法:
matrix = Enumerable.Repeat(0,3) .Select(d => Enumerable.Repeat(0,7).ToList()) .ToList();
您可能不希望使用列表进行矩阵表示,除非矩阵非常稀疏……但是如何创建整数列表? 然后,如果您有其中一个,您将如何将其添加到列表列表中? 您需要将这些列表添加到列表中多少次?
我会去int[,]
因为它很可读,对我来说至少……
int rows; int columns; List> matrix; matrix = new List>(); for (int i = 0; i < rows; i++) { List row; row = new List (); for (int j = 0; j < columns; j++) { row.Add(0); } matrix.Add(row); }
如果要在矩阵中放置其他内容而不是“0”,只需替换添加到矩阵行的值。 干杯!
我无法抗拒,为什么不使用BitVector? 是否需要使用列表列表才能生成二进制序列? 或者选择0和1; s为例?
http://msdn.microsoft.com/en-us/library/system.collections.specialized.bitvector32.aspx
如果它很稀疏,请考虑使用
int[][] matrix;
与使用List相比,这在速度和内存占用方面更有效。
如果您想要一些开放式可读矩阵function,您可以查看Math.Net的Iridium项目 。 它支持稀疏矩阵,并具有大量的矩阵函数。 它的实现只比使用Double [,]稍慢,我已经将它用于具有超过60,000,000个值的矩阵上的函数。