python中的成员运算符

时间:2014-11-22 10:16:45

标签: python matlab list vector octave

如何在list(向量)上的Python成员操作中执行,例如在Matlab / Octave中。我的意思是,给出两个列表:

a = [1,2,3]
b = [4,5,6]

是否有成员运算符,例如:

c = a .* b = [1*4,2*5,3*6]
d = a ./ b = [1/4,2/5,3/6]

我知道我可以自己实施,如果没有这样的模块,我会这样做。一种不完全防弹的方式可能是:

# Memberwise product:
def mwprod(a,b):
    c = []
    if len(a) == len(b):
        for a,b in zip(a,b):
            try:
                c.append(a*b)
            except:
                c.append(NaN)
    return c

user3426575所述,这可以用非常pythonic的方式浓缩:

c = [ x*y for x, y in zip(a,b)  ]

无论如何,我想知道在list上过载或实现这些操作符的更密集和美观的东西。

2 个答案:

答案 0 :(得分:2)

你可以这样试试,

>>> [ item * b[k] for k,item in enumerate(a)]
[4, 10, 18]
>>> [ item / b[k] for k,item in enumerate(a)]
[0.25, 0.4, 0.5]

答案 1 :(得分:2)

这可以通过 numpy

来完成
>>> import numpy as np
>>> a = np.array([1,2,3],float)  # float argument is used so that / operator does float division rather than integer division
>>> b = np.array([4,5,6],float)
>>> a*b
array([  4.,  10.,  18.])
>>> a/b
array([ 0.25,  0.4 ,  0.5 ])