Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 添加向量类定义_Python - Fatal编程技术网

Python 添加向量类定义

Python 添加向量类定义,python,Python,我试图用python实现一个向量类,但似乎无法理解这个加法函数的逻辑。下面的代码包括示例 注意:Vec()是一个包含两个成员变量的类。v、 D设置向量的域,v.f是将域映射到相应值的字典。还请注意,v.D中映射到0的元素被假定为在v.f中 def add(u,v): """ Returns the sum of the two vectors. Make sure to add together values for all keys from u.f and v.f e

我试图用python实现一个向量类,但似乎无法理解这个加法函数的逻辑。下面的代码包括示例

注意:Vec()是一个包含两个成员变量的类。v、 D设置向量的域,v.f是将域映射到相应值的字典。还请注意,v.D中映射到0的元素被假定为在v.f中

def add(u,v):
    """
    Returns the sum of the two vectors.
    Make sure to add together values for all keys from u.f and v.f even if
    some keys in u.f do not exist in v.f (or vice versa)

    >>> a = Vec({'a','e','i','o','u'}, {'a':0,'e':1,'i':2})
    >>> b = Vec({'a','e','i','o','u'}, {'o':4,'u':7})
    >>> c = Vec({'a','e','i','o','u'}, {'a':0,'e':1,'i':2,'o':4,'u':7})
    >>> a + b == c
    True
    >>> a == Vec({'a','e','i','o','u'}, {'a':0,'e':1,'i':2})
    True
    >>> b == Vec({'a','e','i','o','u'}, {'o':4,'u':7})
    True
    >>> d = Vec({'x','y','z'}, {'x':2,'y':1})
    >>> e = Vec({'x','y','z'}, {'z':4,'y':-1})
    >>> f = Vec({'x','y','z'}, {'x':2,'y':0,'z':4})
    >>> d + e == f
    True
    >>> b + Vec({'a','e','i','o','u'}, {}) == b
    True
    """
    assert u.D == v.D

    return Vec({v.D}, {x: v.f.get(x, 0) + u.f.get(x, 0) for x in v.D})

我的猜测是v.D是一本字典,所以这个

{v.D}
相当于

{{...}}

这不是期望的。

您得到了什么结果?当我尝试提交时,我得到了一个“不可损坏类型:set”;哦,上帝,谢谢你,克里斯蒂安!真不敢相信我居然没看到。如此愚蠢的错误…+1像
v.D
这样的书是一个集合,它是可变的。