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

Python实现列表除第i个元素外其余元素相乘并返回结果列表

除自身以外数组乘积的Python实现

需求说明:给定整数列表,对每个位置i计算排除第i个元素后其余所有元素的乘积,返回与原列表长度一致的结果列表。示例:输入[1,2,3,4],输出[24,12,8,6]。

不推荐:暴力遍历法

逻辑简单直接,遍历每个位置时跳过当前元素计算所有剩余元素乘积,仅适合长度极小的列表使用,时间复杂度为O(n²),列表长度过大时性能极差。

def product_except_self_brute(nums):
    result = []
    for i in range(len(nums)):
        product = 1
        for j in range(len(nums)):
            if i != j:
                product *= nums[j]
        result.append(product)
    return result

推荐:左右乘积法

时间复杂度O(n),额外空间复杂度O(1)(不计入输出列表占用的空间),兼容存在0的输入场景,不会触发除零错误。
实现逻辑:

  • 先从左到右遍历,将每个位置左侧所有元素的乘积存入结果列表对应位置
  • 再从右到左遍历,将每个位置右侧所有元素的乘积乘到结果列表对应位置,最终得到的就是排除当前元素的总乘积
def product_except_self(nums):
    n = len(nums)
    result = [1] * n
    # 计算左侧乘积
    left_product = 1
    for i in range(n):
        result[i] = left_product
        left_product *= nums[i]
    # 计算右侧乘积并合并到结果
    right_product = 1
    for i in range(n-1, -1, -1):
        result[i] *= right_product
        right_product *= nums[i]
    return result

调用测试

print(product_except_self([1,2,3,4]))
# 输出:[24, 12, 8, 6]

注意:不要使用「先计算所有元素总乘积再除以当前位置元素」的实现思路,当输入列表存在0时会触发除零错误,也无法得到正确结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 09:39:05