Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python函数中处理Java列表(从Java程序发送)?_Java_Python - Fatal编程技术网

如何在Python函数中处理Java列表(从Java程序发送)?

如何在Python函数中处理Java列表(从Java程序发送)?,java,python,Java,Python,我有一个Java列表,如下Java代码块所示: List<Float> list = new ArrayList<Float>(); list.add(1.2345); list.add(2.2345); 但是在程序运行时发生了一些错误,JLISTPcessor没有打印出任何内容 我不知道是否可以将列表类型的参数从Java传递到Python,或者是否有其他方法可以做到这一点?如果您有任何建议,我们将不胜感激,非常感谢 无法将ArrayList传递给Python脚本,因此

我有一个Java列表,如下Java代码块所示:

List<Float> list = new ArrayList<Float>();
list.add(1.2345);
list.add(2.2345);
但是在程序运行时发生了一些错误,JLISTPcessor没有打印出任何内容

我不知道是否可以将列表类型的参数从Java传递到Python,或者是否有其他方法可以做到这一点?如果您有任何建议,我们将不胜感激,非常感谢

无法将ArrayList传递给Python脚本,因此必须将ArrayList转换为如下所示的字符串:

public static String listToString(List<Object> list)
{
    String listConcat = "";
    for(int i = 0; i < list.size(); i++)
    {
        String num = String.valueOf(list.get(i));
        if((i + 1) != list.size())
        {
            listConcat += num + ",";
        }
        else
        {
            listConcat += num;
        }
    }
    return listConcat;
}

public static void main(String[] args)
{
    List<Object> list = new ArrayList<Object>();
    list.add(1.2345);
    list.add(2.2345);
    System.out.println(listToString(list));
}
然后在foo.py中,必须在逗号处拆分字符串,并将每个字符串转换为浮点:

import sys

def JListPrcessor(javalist):
    print "pass the processor"
    jlist = [float(num) for num in javalist.split(",")]
    print jlist

try:
    inputList = sys.argv[1]
except:
    print "No input str given"
    sys.exit(1)

JListPrcessor(inputList)
其中:

pass the processor
[1.2345, 2.2345]

不知道你在做什么,但是如果你有用不同语言构建的模块,为什么不在两者之间使用一种可以理解的格式呢?例如,您可以使用现有库将列表更改为JSON,然后在python端将该JSON解析回python dict。如果您不发送太复杂的对象,这不需要您的任何努力。

发生了一些错误什么错误???回溯?用于将java连接到python的模块?错误?我猜Jython被利用了。
import sys

def JListPrcessor(javalist):
    print "pass the processor"
    jlist = [float(num) for num in javalist.split(",")]
    print jlist

try:
    inputList = sys.argv[1]
except:
    print "No input str given"
    sys.exit(1)

JListPrcessor(inputList)
pass the processor
[1.2345, 2.2345]