Python到VB6的转换
我对下面的代码有一个问题:Python到VB6的转换,python,vb6,Python,Vb6,我对下面的代码有一个问题: def getJenksBreaks( dataList, numClass ): dataList.sort() mat1 = [] for i in range(0,len(dataList)+1): temp = [] for j in range(0,numClass+1): temp.append(0) mat1.append(temp) 例如,mat1将如下所示 0, 0, 0, 0, 0, 0 0, 0,
def getJenksBreaks( dataList, numClass ):
dataList.sort()
mat1 = []
for i in range(0,len(dataList)+1):
temp = []
for j in range(0,numClass+1):
temp.append(0)
mat1.append(temp)
例如,mat1
将如下所示
0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 0
之后,将创建mat2
:
mat2 = []
for i in range(0,len(dataList)+1):
temp = []
for j in range(0,numClass+1):
temp.append(0)
mat2.append(temp)
然后修改mat1
和mat2
:
for i in range(1,numClass+1):
mat1[1][i] = 1
mat2[1][i] = 0
for j in range(2,len(dataList)+1):
mat2[j][i] = float('inf')
当我看到这一行:
mat1[1][i] = 1
在我看来,XY位置的项目似乎已更改
我想将这段代码移植到VB6,但我看不到在VB6中反映这种行为的任何方法。集合无法做到这一点,我的意思是使用X和Y访问项目,是吗?好吧,我创建了自己的类来处理这个问题。如果有人有更好的主意,请告诉我
Option Explicit
Private m_XCount&
Private m_YCount&
Private m() As Variant
Public Sub Add(ByRef u() As Variant)
If UBound(u) > m_XCount Then
m_XCount = UBound(u)
End If
m_YCount = m_YCount + 1
ReDim Preserve m(0 To m_XCount, 0 To m_YCount)
Dim l&
For l = 0 To UBound(u)
m(m_XCount + l, m_YCount) = u(l + 1)
Next l
m_YCount = m_YCount + 1
End Sub
Private Sub Class_Initialize()
ReDim m(0, 0)
End Sub
Public Property Get Value(ByVal uX As Long, ByVal uY As Long) As Variant
Value = m(uX, uY)
End Property
Public Property Let Value(ByVal uX As Long, ByVal uY As Long, ByVal uValue)
m(uX, uY) = uValue
End Property
为什么要转换成一种多年来一直被弃用的语言?我需要将它集成到一个巨大的VB6应用程序中,我无法轻松地转换成另一种语言。对我来说,目前将Python代码转换为VB6比将大型应用程序转换为.NET或Python更容易。但是谢谢你的邀请。