使用 Chaquopy 返回从 Python 到 Java 的多个列表
Returning multiple lists from Python to Java using Chaquopy
如何从我的 Python 脚本 return 多个列表、值等到 Java 而不会以单个对象结束?现在我以一个 PyObject 结束,其中包含两个 returned 值,但我还没有想出如何在 Java.
中再次将它们分开
Python:
import random
def calculations():
res1 = [33, 13, 20, 34]
list = [1,3,5,7]
res2 = random.choices(list, k=10000)
return res1, res2
Java:
if(!Python.isStarted())
Python.start(new AndroidPlatform(getActivity()));
Python py = Python.getInstance();
PyObject obj = py.getModule("main").callAttr("calculations");
# How to extract the different objects from obj? Tried the following without success.
List<PyObject> totList = obj.call(0).asList();
int[] data3 = obj.call(1).toJava(int[].class);
正如 the documentation 所说,call
等同于 Python ()
语法。但是元组(calculations
returns)是不可调用的,所以我认为这是你收到的错误。
相反,您应该这样做:
List<PyObject> obj = py.getModule("main").callAttr("calculations").asList();
int[] res1 = obj.get(0).toJava(int[].class);
int[] res2 = obj.get(1).toJava(int[].class);
如何从我的 Python 脚本 return 多个列表、值等到 Java 而不会以单个对象结束?现在我以一个 PyObject 结束,其中包含两个 returned 值,但我还没有想出如何在 Java.
中再次将它们分开Python:
import random
def calculations():
res1 = [33, 13, 20, 34]
list = [1,3,5,7]
res2 = random.choices(list, k=10000)
return res1, res2
Java:
if(!Python.isStarted())
Python.start(new AndroidPlatform(getActivity()));
Python py = Python.getInstance();
PyObject obj = py.getModule("main").callAttr("calculations");
# How to extract the different objects from obj? Tried the following without success.
List<PyObject> totList = obj.call(0).asList();
int[] data3 = obj.call(1).toJava(int[].class);
正如 the documentation 所说,call
等同于 Python ()
语法。但是元组(calculations
returns)是不可调用的,所以我认为这是你收到的错误。
相反,您应该这样做:
List<PyObject> obj = py.getModule("main").callAttr("calculations").asList();
int[] res1 = obj.get(0).toJava(int[].class);
int[] res2 = obj.get(1).toJava(int[].class);