Python - 使用字符串作为表达式(exec 和 eval 不工作)

Python - Using string as expression (exec and eval not working)

我正在尝试使用 scipy.stats.f_oneway() 执行方差分析。它需要 array_like 作为输入,不管是什么意思。

反正我手动输入要比较的数据就可以了。例如,这有效: 输入:

list1 = [3,4,5,6]
list2 = [4,5,6,7]
list3 = [5,6,7,8]
sp.stats.f_oneway(list1, list2, list3)

输出:

F_onewayResult(statistic=2.3999, pvalue=0.1461)

但是,我想比较很多不同的列表,我想在我的代码中动态比较它们。

这就是我想要的:

list1 = [3,4,5,6]
list2 = [4,5,6,7]
list3 = [5,6,7,8]
listOfLists = [list1, list2, list3]
sp.stats.f_oneway(listOfLists)

不过,f_oneway不喜欢这种输入格式。所以我在想,也许我可以使用循环来创建一个字符串,然后将其解压缩以用作参数,如下所示:

list1 = [3,4,5,6]
list2 = [4,5,6,7]
list3 = [5,6,7,8]
listString = 'list1, list2, list3'
sp.stats.f_oneway(eval(listString))

但是,这不起作用。这让我相信这个函数需要像这样的输入:

sp.stats.f_oneway(list1, list2, list3)

如何使用字符串提供 f_oneway 函数所需的输入?

你可以这样做:

sp.stats.f_oneway(*listOflists)

这将打开列表并放入 3 个单独的参数