【发布时间】:2015-05-22 20:16:06
【问题描述】:
我在 Python 中有一个列表列表,其中包含混合值,有些是字符串,有些是元组。
data = [[0,1,2],["a", "b", "c"]]
我想知道是否有一种方法可以在不使用 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 互操作,我可以通过将其设置为等于数组来在 Excel 中设置整个范围。这就是我想将列表转换为数组的原因。谢谢,
我想知道的是 Array 是一个类型化的对象,是否可以将其组成部分设置为字符串或整数?我想我可能只限于一个。正确的?如果是这样,我可以使用任何其他类型的数据吗? 将其设置为 Arrayobject 是否可以确保我可以在其中组合 str/int?
虽然我也可以使用这个:
arr= Array[Array[object]](map(object, data))
但它会引发错误。有任何想法吗?
【问题讨论】:
-
您需要使用
Array.CreateInstance创建二维数组,并且它们必须是单一类型。
标签: python arrays python-2.7 ironpython excel-interop