使用Chaquopy将多个列表从Python返回给Java

3

如何从Python脚本返回多个列表、值等到Java而不是一个单一的对象?目前我得到的是一个PyObject对象,其中包含了两个返回值,但我还没有想出如何在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);

如果您的应用程序崩溃了,包括来自Logcat的堆栈跟踪将非常有帮助。 - mhsmith
1个回答

4
根据文档所述,call与Python的()语法等效。但是元组(即calculations返回的内容)不可调用,因此我认为这就是您收到的错误。
相反,您应该像这样执行:
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);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接