如何使用返回列表作为另一个函数输入的函数?

时间:2018-10-11 19:26:12

标签: python python-3.x list function

我首先编写了一个函数,该函数接受18个参数并将其转换为6个不同的列表。这是代码:

def list_maker(val1,val2,val3,val4,val5,val6,val7,val8,val9,por1,por2,por3,hth1,hth2,hth3,sat1,sat2,sat3):

#Make the voip list
list1 = [val1,val2,val3]
list2 = [val4,val5,val6]
list3 = [val7,val8,val9]

#Make the variable list
list_por = [por1,por2,por3]
list_hth = [hth1,hth2,hth3]
list_sat = [sat1,sat2,sat3]

return list1,list2,list3,list_por,list_hth,list_sat

该部分工作正常(一旦实际工作,我会使其看起来更好)。 现在,我的想法是将该函数用作下面另一个函数的输入以创建图:

def graph_maker(listx1,listx2,listx3,list1,list2,list3):

#plot the saturation graph
por_plot = plt.plot(listx1,list1)
por_plot.ylabel('VOIP')
por_plot.xlabel('Porosity')
por_plot.show()

#plot the heigth graph
hth_plot = plt.plot(listx2,list2)
hth_plot.ylabel('VOIP')
hth_plot.xlabel('Height')
hth_plot.show()

#plot the saturation graph
sat_plot = plt.plot(listx3,list3)
sat_plot.ylabel('VOIP')
sat_plot.xlabel('Saturation')
sat_plot.show()

所以我用以下两行代码:

list_maker(voip1,voip2,voip3,voip4,voip5,voip6,voip7,voip8,voip9,0.3,0.2,0.15,100,150,200,0.8,0.6,0.5)
graph_maker(list_maker)

我得到的错误是:

  

graph_maker()缺少5个必需的位置参数:“ listx2”,   'listx3','list1','list2'和'list3'

据我了解,似乎list_maker()实际上仅返回一个列表,显然graph_maker函数需要6个参数。有什么想法吗?

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

Marco,当您将list_maker传递给graph_maker时,实际上并没有将函数的结果(所需的列表)传递给graph_maker,而实际上是将函数传递给了它。

但这不是不是,只需这样做:

result = list_maker(voip1,voip2,voip3,voip4,voip5,voip6,voip7,voip8,voip9,0.3,0.2,0.15,100,150,200,0.8,0.6,0.5)
graph_maker(result)

由于list_maker函数会返回包含所有列表的元组,因此您需要通过以下方式对其进行扩展:

result = list_maker(voip1,voip2,voip3,voip4,voip5,voip6,voip7,voip8,voip9,0.3,0.2,0.15,100,150,200,0.8,0.6,0.5)
graph_maker(*result)

星号会将元组扩展为函数所需的5个参数,这有意义吗?

答案 1 :(得分:0)

您在外部函数调用中缺少内部函数调用的一部分:

graph_maker(list_maker)
graph_maker(*list_maker(vars))

或将初始函数调用分配给变量,然后使用*来解压值(贷记到@zondo)

x=list_maker(voip1,voip2,voip3,voip4,voip5,voip6,voip7,voip8,voip9,0.3,0.2,0.15,100,150,200,0.8,0.6,0.5)
graph_maker(*x)