如何修复可能包含负数的列表的错误

我正在尝试获取列表ab的cagr:

ab=[10,20,356,-67]

abyear= sum(map(lambda x : x !=0, ab))

我的公式过去经常

ab_cagr=(((ab[0]/ab[abyear-1])**(1/abyear))-1)

它给了我一个错误:

'<' not supported between instances of 'complex' and 'float'

然后我尝试了:

def abcagr():
    if ab[abyear-1] > 0 and ab[0] >=0 : return (((ab[0]/ab[abyear-1])**(1/abyear))-1)
    else: return 0


netinc_cagr=proficagr()*100

并且也得到同样的错误。

ab的列表是示例,它可能是整个列表可能为负,或者只有1可能为负。如何解决这个问题?

评论