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

Python中有没有更优方法实现不同长度列表的元素两两相加?

更简洁高效的实现方案汇总
  • 方案1:原生列表推导式(无额外依赖,最通用)
main_tx = [100, 200]
add_tx = [1, 2, 3]
tx = [x + user_x for x in main_tx for user_x in add_tx]
print(tx)

逻辑和你原有的嵌套循环完全等价,语法更简洁,运行效率和原生循环基本一致,是中小型列表场景的最优选择,不需要引入任何额外依赖。

  • 方案2:使用itertools + operator模块(适合迭代器链式操作场景)
    你提到的itertools.product可以直接生成两个列表的笛卡尔积,再搭配对应工具完成元素求和:
import itertools
import operator

main_tx = [100, 200]
add_tx = [1, 2, 3]
# 写法1:搭配starmap直接解包元组调用add,性能最优
tx = list(itertools.starmap(operator.add, itertools.product(main_tx, add_tx)))
# 写法2:搭配sum求和,不需要导入operator
tx = list(map(sum, itertools.product(main_tx, add_tx)))

这种方案返回迭代器的特性适合处理超大规模列表,不需要一次性加载所有结果到内存,和其他itertools工具链式配合使用时更灵活。

  • 方案3:numpy广播机制(超大规模数值列表场景性能最优)
    如果处理的是万级以上的数值列表,用numpy的广播运算速度会比纯Python实现快几个数量级:
import numpy as np

main_tx = [100, 200]
add_tx = [1, 2, 3]
tx = (np.array(main_tx)[:, np.newaxis] + np.array(add_tx)).ravel().tolist()

注意该方案需要额外安装numpy依赖,小列表场景下反而会有导入和类型转换的额外开销,不建议使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 01:24:03