You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用单行函数实现复向量内积(无动态集合/非Numpy)

复向量内积的单行实现方案

核心要求回顾

需实现符合以下签名的单行函数,计算两个复向量的内积(对应位置元素执行u(i) * 共轭(v(i))后求和):

def inner_product_c(c1: Iterable[complex], c2: Iterable[complex]) -> complex:
    # 单行实现代码

同时需满足:

  • 不能创建列表、元组等非固定长度集合
  • 禁止使用Numpy

几种可行的单行实现方式

方式1:sum + 生成器表达式(无需额外导入)

这是最简洁直观的实现,生成器表达式直接传入sum,不会创建额外集合:

def inner_product_c(c1: Iterable[complex], c2: Iterable[complex]) -> complex:
    return sum(u * v.conjugate() for u, v in zip(c1, c2))

方式2:functools.reduce 累加实现

借助reduce逐步累加每一项的计算结果,初始值设为0j保证结果为复数类型:

from functools import reduce
def inner_product_c(c1: Iterable[complex], c2: Iterable[complex]) -> complex:
    return reduce(lambda acc, uv: acc + uv[0] * uv[1].conjugate(), zip(c1, c2), 0j)

方式3:itertools.starmap + sum

用starmap将zip生成的元素对作为参数传入计算lambda,再通过sum求和:

from itertools import starmap
def inner_product_c(c1: Iterable[complex], c2: Iterable[complex]) -> complex:
    return sum(starmap(lambda u, v: u * v.conjugate(), zip(c1, c2)))

内容的提问来源于stack exchange,提问作者wajde

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 22:15:28