用于+ - *的python缩减函数

Jok*_*ini 1 python math operations vector

我需要在point3值上使用3个数学运算函数.我想知道是否有人能够以更清洁和浓缩的方式更好地编写这些功能.

谢谢.

ptA = [10.0, 20.0, 30]
ptB = [50, 50 ,50]
percent = .50


def addPoint3(ptA,ptB):

    idA = ptA[0] + ptB[0]
    idB = ptA[1] + ptB[1]
    idC = ptA[2] + ptB[2]

    return [idA,idB,idC]

def subtractPoint3(ptA,ptB):

    idA = ptA[0] - ptB[0]
    idB = ptA[1] - ptB[1]
    idC = ptA[2] - ptB[2]

    return [idA,idB,idC]

def percentagePoint3(ptA,percentage):

    idA = ptA[0] * percentage
    idB = ptA[1] * percentage
    idC = ptA[2] * percentage

    return [idA,idB,idC]



add = addPoint3(ptA,ptB)
sub = subtractPoint3(ptA,ptB)
per = percentagePoint3(ptA,percent)
print add,sub,per
Run Code Online (Sandbox Code Playgroud)

jon*_*rpe 5

您可以使用zip列出推理来简化这些.例如:

def addPoint3(ptA, ptB):
    return [a+b for a, b in zip(ptA, ptB)]
Run Code Online (Sandbox Code Playgroud)

要么

def percentagePoint3(ptA, percentage):
    return [pt * percentage for pt in ptA]
Run Code Online (Sandbox Code Playgroud)

您也可以考虑实现一个类,而不是列表,因此您可以将它们定义为实例方法(有关此示例,请参阅RicardoCárdenes的回答).