Python 在调用 Fortran 获取长度后尝试创建特定长度的列表时出错

问题描述 投票:0回答:1

我有一段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 获得)?

python fortran
1个回答
0
投票

您可以尝试将此类型显式转换为 int

x = [0]*int(n)

© www.soinside.com 2019 - 2024. All rights reserved.