Python中2D数组列表的列表

时间:2015-03-19 15:54:15

标签: python arrays python-2.7 ironpython excel-interop

我有一个Python列表,其中包含多个值,一些是字符串,一些是元组。

data = [[0,1,2],["a", "b", "c"]]

我想知道是否有一种方法可以轻松地将任何长度列表转换为2D数组而不使用Numpy。我正在使用System.Array,因为这是所需的格式。 我知道我可以创建一个新的Array实例,然后使用for循环将列表中的所有数据写入其中。我只是好奇,如果有一个很好的Pythonic方式做到这一点。

x = len(data)
y = len(data[0])
arr = Array.CreateInstance(object, x, y)

然后我可以遍历我的数据并设置arr值吗?

arr = Array.CreateInstance(object, x, y)
for i in range(0, len(data),1):
    for j in range(0,len(data[0]), 1):
        arr.SetValue(data[i][j], i,j)

如果可能,我想避免像这样循环。谢谢,

聚苯乙烯。这适用于Excel Interop,我可以通过将其设置为等于数组来在Excel中设置整个范围。这就是我想将列表转换为数组的原因。谢谢,

我想知道的是,Array是一个类型化的对象,是否可以将其组成部分设置为字符串或整数?我想我可能只会被限制在一个人身上。对?如果是这样,我可以使用任何其他类型的数据吗? 将它设置为Arrayobject确保我可以在其中组合str / int吗?

另外我虽然可以使用它:

arr= Array[Array[object]](map(object, data))

但它会引发错误。有任何想法吗?

1 个答案:

答案 0 :(得分:0)

您可以使用Array.CreateInstance创建单个或多维数组。由于Array.CreateInstance方法接受" Type"你指定任何你想要的类型。例如:

// gives you an array of string
myArrayOfString = Array.CreateInstance(String, 3)

// gives you an array of integer
myArrayOfInteger = Array.CreateInstance(Int32, 3)

// gives you a multidimensional array of strings and integer
myArrayOfStringAndInteger = [myArrayOfString, myArrayOfInteger]

希望这会有所帮助。另请参阅msdn网站,了解如何使用Array.CreateInstance。