Python While循环内部函数

Python While循环内部函数,python,function,dataframe,while-loop,Python,Function,Dataframe,While Loop,我正在做一个关于超额损失再保险定价的项目,因此我定义了两个函数:第一个函数计算保险人保留的成本: charge_assureur=[] def CHARGE(c,d): for i in range(0, len(ma_base)): if ma_base.iloc[i,2] < d: charge_assureur.append(ma_base.iloc[i,2]) elif ma_base.iloc[i,2] > c

我正在做一个关于超额损失再保险定价的项目,因此我定义了两个函数:第一个函数计算保险人保留的成本:

charge_assureur=[]
def CHARGE(c,d):
    for i in range(0, len(ma_base)):
        if ma_base.iloc[i,2] < d:
            charge_assureur.append(ma_base.iloc[i,2])
        elif ma_base.iloc[i,2] > c:
            charge_assureur.append(ma_base.iloc[i,2]-c)
        else :
            charge_assureur.append(d)
    return(charge_assureur)
我的问题是,当在函数
Priorite\u maximale\u dichoomie
中调用函数
CHARGE
时,它在第二次迭代中返回一个长度为1654的列表,在第三次迭代中返回2481的列表…依此类推。
有人能帮我解决这个问题吗?通过在第二个函数中调用函数
CHARGE
,我想为每个可能的夫妇
(Porte,Priorite)

创建一个长度为827的列表,将
CHARGE\u assureur
定义为CHARGE函数中的局部变量,而不是全局变量。每次调用
CHARGE()
它附加到
费用\u保险人
列表,而不首先清空它。所以这个名单越来越长了。
Portee=10**12
MAX=2*10**7
lengths=[39,125,67,72,88,65,18,93,125,72]


def Priorite_maximale_dichotomie():
    b=max(sinistre.montant[sinistre.montant>=u])
    a=0
    while (b-a)>1 :
        Priorite=(a+b)/2
        if np.quantile(CHARGE(Portee,Priorite )), .95) > MAX:
            b=Priorite
        else :
            a=Priorite
    return(Priorite)