我有一段Python代码,需要调用Fortran来获取Python需要创建的列表的长度(以便稍后可以将该正确大小的列表传递回Fortran)。
这是代码:
# get size of x
n = ct.c_int(0)
fs(ct.byref(n)) # fs is a Fortran subroutine which returns the length
print('n: ',n)
x = [0]*n
print('x: ',x)
然而Python抱怨:
x = [0]*n
TypeError: can't multiply sequence by non-int of type 'c_long'
如果我将 n 的初始化更改为 n=0,则下一行的 byref 调用将失败并显示:
fs(ct.byref(n))
TypeError: byref() argument must be a ctypes instance, not 'int'
如何创建长度为 n 的列表(从 Fortran 获得)?
您可以尝试将此类型显式转换为 int
x = [0]*int(n)