在Python中将平面列表转换为二维System.Array类型Array [Array [Point]]

时间:2014-09-12 02:39:54

标签: python arrays ironpython

我在Python中使用Surfaces。我试图从控制点列表中创建一个NurbsSurface。但是,我可以使用的原始数据是平面列表。因为为了创建一个表面,我需要将该数据转换为Array [Array [Point]],这是Systems类中的一个类型。由于我在Python中,我最初的想法是创建一个列表列表,但不幸的是,这被拒绝了。错误明确指出它只接受Array [Array [Point]] - 一个二维数组。

dsControlPoints = [pt1, pt2, pt3, pt4, pt5, pt6, pt7, pt8, pt8, pt9, pt10]
uCount = 2

我尝试将其转换为列表列表,因为我知道U和V方向上的点数。

newControlPoints = [dsControlPoints[i:i+uCount] for i  in range(0, len(dsControlPoints), uCount)]

给出了一个列表,列表中包含两个点:

newControlPoints = [[pt1, pt2], [pt3, pt4], [pt5, pt6], [pt7, pt8], [pt9, pt10]]

我不确定从平面列表或列表列表中选择哪个更容易。我发现为了创建一个System.Array,我需要调用一个:

Array.CreateInstance([Point], (5,2))

但是这会创建一个空数组,我不知道如何填充它。我以为我可以将现有的列表列表转换为数组并将它们一起追加到另一个数组中但是没有追加的东西我可以在数组上调用,也没有在IronPython 2.7中工作的Array.Add这是什么我在用。

如何将平面列表或列表列表转换为二维数组[Array [Point]],它是System.Array类型而不是Python类型。

谢谢!

1 个答案:

答案 0 :(得分:1)

我想您正在使用IronPython。可以像这样创建一个二维数组:

from System import Array
array = Array[Array[int]]( ( (1,2), (3,4) ) )

有关详细信息,请阅读此文档:http://www.ironpython.info/index.php?title=Typed_Arrays_in_IronPython