我正在尝试运行代码optimize.py(scipy pack的一部分),它给了我这个错误:
TypeError:只能将元组(不是“列表”)连接到元组
产生错误的代码部分粘贴在下面 -
def wrap_function(function, args):
ncalls = [0]
if function is None:
return ncalls, None
def function_wrapper(*wrapper_args):
ncalls[0] += 1
return function(*(wrapper_args + args))
return ncalls, function_wrapper
你能否指出他们试图将元组连接到列表的位置,以及如何解决它?
如果有必要,我会提供更多代码 - 我几乎不知道在这里发布问题,所以我只粘贴了一小部分,其中发生了错误。
此代码用于运行命令'keepransit'以查找过境系外行星。
答案 0 :(得分:4)
您很可能将列表作为args
传递并尝试连接到wrapper_args
这是一个元组。
所以将args转换为元组或简单地传递一个args元组。
wrapper_args + tuple(args)
*wrapper_args
创建了传入参数的元组,因此显而易见tuple() + list()
无法正常工作
答案 1 :(得分:1)
我认为问题在于:
wrapper_args + args
我假设wrapper_args
是一个元组,args
是一个列表。例如:
wrapper_args = (1,2,3)
arg = [1,2,3]
wrapper_args + arg # TypeError: can only concatenate list (not "tuple") to list
解决方案:
wrapper_args + tuple(arg)