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
相关产品推荐
相关产品推荐

