从Python函数

时间:2016-03-14 16:04:22

标签: python function python-2.7 csv return

在进行一些计算后,我有一个返回4个值的函数。 我输入5个参数。

我使用6个不同的输入参数运行上述函数 6次以获得6个不同的输出。

def id_match(zcosmo,zphot,zmin,zmax,mlim):
    data_zcosmo_lastz = zcosmo[(data_m200>mlim)*(zcosmo>zmin)*(zcosmo<zmax)]
    data_zphot_lastz = zphot[(data_m200>mlim)*(zphot>zmin)*(zphot<zmax)]
    halo_id_zcosmo = data_halo_id[(data_m200>mlim)*(zcosmo>zmin)*(zcosmo<zmax)]
    halo_id_zphot = data_halo_id[(data_m200>mlim)*(zphot>zmin)*(zphot<zmax)]
    idrep_zcosmo = data_idrep[(data_m200>mlim)*(zcosmo>zmin)*(zcosmo<zmax)]
    idrep_zphot = data_idrep[(data_m200>mlim)*(zphot>zmin)*(zphot<zmax)]

    file2freq1 = Counter(zip(halo_id_zcosmo,idrep_zcosmo))
    file2freq2 = Counter(zip(halo_id_zphot,idrep_zphot))


    set_a = len(set(file2freq1) & set(file2freq2)) # this has the number of common objects

    difference = 100.0 - (set_a*100.0)/len(data_zcosmo_lastz)

    print difference

    return (len(data_zcosmo_lastz),len(data_zphot_lastz),set_a,difference)    

zmin_limits = [0.1,0.4,0.7,1.0,1.3,1.6]
zmax_limits = [0.4,0.7,1.0,1.3,1.6,2.1]
mlim_limits = [5e13,5e13,5e13,5e13,5e13,5e13]

for a,b,c in zip(zmin_limits,zmax_limits,mlim_limits):
    id_match(data_zcosmo_lastz,data_zphot_lastz,a,b,c)

以上代码为6个不同的输入参数打印difference

但我想知道如何将函数的输出保存到数组中,以便将其保存为csv file ???

我知道这样做

a,b,c,d = id_match(input params)

会让a,b,c,d拥有id_match的一个输出。但我想将所有返回值存储在单个数组中。

1 个答案:

答案 0 :(得分:1)

http://localhost:8080/data/process已经返回一个元组。您不需要将其转换为任何内容,因为id_match()可以处理元组。您需要做的就是为csv.DictWriter.writerow()返回的内容分配一个变量并写入id_match()文件:

csv