该教程详解如何编写一个不依赖 numpy 的函数,对输入列表的每个索引 i,生成新列表,其中第 i 个元素被替换为除自身外所有其他元素的乘积,其余位置保持原值。
要实现“对列表中每个位置生成一个新列表,其中该位置的元素被替换为其余所有元素的乘积”,关键在于:对每个索引 i,构造一个新列表,仅修改第 i 个元素为 total_product // arr[i](前提是无零),其余元素保持不变。
原始代码存在多个根本性问题:
✅ 正确思路(纯 Python,健壮高效):
以下是推荐实现(含零安全处理):
def multiList(arr):
if not arr:
return []
# 处理含零情况:统计零的个数
zeros = arr.count(0)
if zeros > 1:
# 多个零 → 所有位置结果都是 0(因至少一个其他元素为 0)
return [0] * len(arr)
elif zeros == 1:
# 恰好一个零 → 仅零所在位置结果为其余数乘积;其余位置结果全为 0
non_zero_prod = 1
zero_idx = -1
for i, x in enumerate(arr):
if x == 0:
zero_idx = i
else:
non_zero_prod *= x
result = [0] * len(arr)
result[zero_idx] = non_zero_prod
return result
else:
# 无零 → 安全使用总乘积除法
total_prod = 1
for x in arr:
total_prod *= x
return [total_prod // x for x in arr]
# 示例调用
print([69, 78, 62, 73, 23])
print(multiList([69, 78, 62, 73, 23]))
# 输出: [8119644, 7182762, 9036378, 7674732, 24358932]⚠️ 注意事项:
? 进阶提示:若需返回所有变换后的列表组成的二维列表(即每个 i 对应一个完整列表,共 n 个列表),可封装为:
def all_multi_lists(arr):
n = len(arr)
if n == 0:
return []
# 先按上述逻辑计算单个结果(用于无零/单零场景)
base_result = multiList(arr)
# 但题目要求“每个位置交换为其余乘积”,即输出 shape=(n, n) 的二维列表
# 更高效做法:预计算前缀积 & 后缀积(O(n) 时间,O(1) 额外空间,无除法)
if 0 not in arr:
prefix = [1] * n
suffix = [1] * n
for i
in range(1, n):
prefix[i] = prefix[i-1] * arr[i-1]
for i in range(n-2, -1, -1):
suffix[i] = suffix[i+1] * arr[i+1]
return [[prefix[i] * suffix[i] for i in range(n)]]
else:
# 含零时用朴素方法(小数据可接受)
res = []
for i in range(n):
prod = 1
for j, x in enumerate(arr):
if j != i:
prod *= x
row = arr.copy()
row[i] = prod
res.append(row)
return res综上,核心是理解题意本质:每个输出列表只改一个位置,且该位置值 = 其余元素乘积。坚持“每次新建列表 + 分类处理零值 + 避免浮点除法”,即可写出清晰、健壮、符合要求的纯 Python 解决方案。
相关文章:
贸易公司网站制作流程,出口贸易网站设计怎么做?
如何在建站之星绑定自定义域名?
,购物网站怎么盈利呢?
如何通过FTP服务器快速搭建网站?
免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?
微课制作网站有哪些,微课网怎么进?
香港服务器租用费用高吗?如何避免常见误区?
javascript中对象的定义、使用以及对象和原型链操作小结
韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南
如何快速上传建站程序避免常见错误?
如何彻底卸载建站之星软件?
微信网站制作公司有哪些,民生银行办理公司开户怎么在微信网页上查询进度?
网站制作的步骤包括,正确网址格式怎么写?
巅云智能建站系统:可视化拖拽+多端适配+免费模板一键生成
高防服务器:AI智能防御DDoS攻击与数据安全保障
建站之星会员如何解锁更多建站功能?
如何做网站制作流程,*游戏网站怎么搭建?
如何通过WDCP绑定主域名及创建子域名站点?
如何在IIS7上新建站点并设置安全权限?
矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?
香港服务器网站推广:SEO优化与外贸独立站搭建策略
网站企业制作流程,用什么语言做企业网站比较好?
如何生成腾讯云建站专用兑换码?
c++怎么编写动态链接库dll_c++ __declspec(dllexport)导出与调用【方法】
香港服务器网站生成指南:免费资源整合与高速稳定配置方案
家具网站制作软件,家具厂怎么跑业务?
制作表格网站有哪些,线上表格怎么弄?
如何通过VPS搭建网站快速盈利?
怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?
微信小程序 input输入框控件详解及实例(多种示例)
如何在宝塔面板中创建新站点?
如何选择长沙网站建站模板?H5响应式与品牌定制哪个更优?
网站制作的软件有哪些,制作微信公众号除了秀米还有哪些比较好用的平台?
百度网页制作网站有哪些,谁能告诉我百度网站是怎么联系?
江苏网站制作公司有哪些,江苏书法考级官方网站?
如何用PHP快速搭建CMS系统?
如何快速搭建高效服务器建站系统?
湖州网站制作公司有哪些,浙江中蓝新能源公司官网?
外汇网站制作流程,如何在工商银行网站上做外汇买卖?
网站设计制作企业有哪些,抖音官网主页怎么设置?
如何挑选高效建站主机与优质域名?
建站之星在线客服如何快速接入解答?
网站网页制作专业公司,怎样制作自己的网页?
linux top下的 minerd 木马清除方法
建站主机类型有哪些?如何正确选型
阿里云网站制作公司,阿里云快速搭建网站好用吗?
美食网站链接制作教程视频,哪个教做美食的网站比较专业点?
如何挑选最适合建站的高性能VPS主机?
浅析上传头像示例及其注意事项
制作网站的软件免费下载,免费制作app哪个平台好?
*请认真填写需求信息,我们会在24小时内与您取得联系。