在一行中实现一个函数,不创建列表或元组或任何其他非固定长度的集合,也不使用numpy使用给定的def signature
我做了什么
def inner_product_c(c1: Iterable[complex], c2: Iterable[complex]) -> complex:
return list(map(lambda x, y: x*y.conjugate() , c1, c2)) ;
i定义了内积空间使得u,v是两个向量我想要所有元素的和对应于u(i) *共轭(v(i))
的相同位置这是我想到的唯一的一行方式还有别的方法可以在一行中完成吗?
在Python3中:
def inner_product_c(c1: Iterable[complex], c2: Iterable[complex]) -> complex:
return sum(list([c1[n]*c2[n].conjugate() for n in range(len(c1))]))
range()
在Python3中返回一个具有空间复杂度O(1)
的迭代器,因此上面的代码不会创建任何具有空间复杂度O(n)
(为向量的n长度)的东西(除了返回列表)