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

Python数字展开问题:如何正确迭代重复数字生成对应位值列表

问题描述

现有数字746342,期望生成展开形式的列表:[700000, 40000, 6000, 300, 40, 2]。但运行以下代码后:

def expanded_form(num):
    row = str(num).strip()
    row_2 = ([int(i) * 10**(len(row)-row.index(i)-1) for i in row])
    print(row_2)

expanded_form(746342)

得到的错误结果是:[700000, 40000, 6000, 300, 40000, 2]——第二个4被错误计算成了第一个4的位值(40000),而非正确的40。

问题原因与修复

问题出在row.index(i)这个方法上:它只会返回当前字符在字符串中第一次出现的索引,所以第二个4调用row.index('4')时,拿到的是第一个4的位置(索引1),导致计算出错误的位值。

要解决这个问题,应该直接遍历每个字符的真实位置,用enumerate()函数同时获取索引和字符即可:

修正后的代码:

def expanded_form(num):
    row = str(num).strip()
    # 用enumerate拿到每个字符的索引idx和字符本身i
    row_2 = [int(i) * 10 ** (len(row) - idx - 1) for idx, i in enumerate(row)]
    print(row_2)

expanded_form(746342)

运行这段代码后,会输出正确的结果:[700000, 40000, 6000, 300, 40, 2]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 08:10:28