Python-使用字符串作为表达式(exec和eval不工作)
我正在尝试使用Python-使用字符串作为表达式(exec和eval不工作),python,scipy,eval,Python,Scipy,Eval,我正在尝试使用scipy.stats.f\u oneway()执行方差分析。它将array\u like作为输入,不管这意味着什么 无论如何,当我手动输入要比较的数据时,它会起作用。例如,这项工作: 输入: 输出: F_onewayResult(statistic=2.3999, pvalue=0.1461) 然而,我想比较许多不同的列表,并且我想在代码中动态地比较它们 这就是我想要的: list1 = [3,4,5,6] list2 = [4,5,6,7] list3 = [5,6,7,8
scipy.stats.f\u oneway()
执行方差分析。它将array\u like
作为输入,不管这意味着什么
无论如何,当我手动输入要比较的数据时,它会起作用。例如,这项工作:
输入:
输出:
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_单向函数所需的输入?您可以这样做:
sp.stats.f_oneway(*listOflists)
这将打开列表并放入3个单独的参数谢谢!我没有见过星型操作员。比我想象中的弦乐好得多。
sp.stats.f_oneway(*listOflists)