布尔表达式和控制流涉及操纵索引号

时间:2014-07-29 22:15:40

标签: python python-3.x indexing boolean-expression control-flow

在Python中尝试将其作为函数的一部分,并且可以预见,它不起作用:

outputlist = [-5,-4,-3,-2,-1,0,1,2,3,-2,-1,0,2,4,-3,-2,1,0,2]    

def counter(outputlist):
    outputlistcut = outputlist[:5]
    count = 0
    for i in np.arange(len(outputlistcut)):
        if outputlistcut[i] >= 0 and outputlistcut[i-1] < 0:
            count += 1
    return count 

count = counter(outputlist)

这返回了错误消息:

TypeError: unsupported operand type(s) for -: 'range' and 'int'

基本上,我想计算一个函数的输出f(x)的实例数(在outputlist中记录的f(x)在从负y变为正数后通过或等于0。有点紧张我怎么能简明地执行这个。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

我怀疑你做了(基于你收到的错误)

i = range(N)

这是错误的

我怀疑你想要像

这样的东西
count = 0
for i in range(N):
    if outputlist[i-1] < 0 and outputlist[i] == 0:
        count += 1

虽然有很多更好的方法可以做到这一点

count = sum([a<0 and b==0 for a,b in zip(outputList,outputList[1:])])