print reduce SyntaxError:无效语法

2024-10-01 15:32:02 发布

您现在位置:Python中文网/ 问答频道 /正文

当我调用这个方法patternFinder()时,我遇到了这样一个错误

def patternFinder():
    avgaLine=((bid+ask)/2)
    x=len(avgaLine)-30
    y=11

    while y<x:
        outcomeRange=avgaLine[y+20:y+30]
        currentPoint=avgaLine[y]

        print reduce((lambda x,y:x+y,outcomeRange)/len(outcomeRange))
        print (currentPoint)
        print ('_________')

        time.sleep(5555)

我得到这个错误:

File <ipython-input-66-a32566f8689e>, line 21
print reduce((lambda x,y:x+y,outcomeRange)/len(outcomeRange))
SyntaxError: invalid syntax

enter image description here


Tags: 方法lambdareducelentimedef错误ask
3条回答

这不是使用reduce的正确方法(除法应该在约化之后完成),而且您甚至不需要在这里使用reduce。如果要计算平均值,请尝试以下方法:

print( sum(outcomeRange) / len(outcomeRange) )

顺便说一句,小心整数除法。请确保outcomeRange至少包含一个十进制值,或者导入了当前除法函数:

^{pr2}$

reduce有两个独立的参数,function和iterable。所以,你应该

reduce(lambda x,y:x+y,  outcomeRange/len(outcomeRange))

但是,还要确保您的outcomeRange是一个numpy数组,否则您将在尝试将其除以一个数字时得到另一个语法错误。否则,将除法转换为[x/len(outcomeRange) for x in outcomeRange]

在这种情况下,最好在求和后除以长度

^{pr2}$

您很可能使用python3+,这意味着print语句的语法不正确。它需要在括号中:

print(reduce((lambda x,y:x+y,outcomeRange)/len(outcomeRange)))

在其他2个print语句中,您已经正确地完成了它,我想您只是错过了这里的内容。在

相关问题 更多 >

    热门问题