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

如何用Python函数实现数字的隔位索引提取?

解决从数字中提取每隔一个数字的问题

你的代码目前存在几个小问题,导致无法得到期望的2,4,6,8结果,我来帮你修正并解释清楚:

原代码的问题

  • 当你传入整数123456789时,尝试用number[1::2]做切片操作会直接报错——整数类型不支持下标访问,只有字符串/列表这类序列才能切片。
  • 退一步说,就算你传入的是字符串,用float()转换切片结果得到的是2468.0,这和你想要的逗号分隔数字格式完全不符。

修正后的实现

这里提供两种常见的实现方式,你可以根据需求选择:

方式1:返回逗号分隔的字符串(匹配你的期望输出)

def credit_card(number):
    # 先把输入转为字符串,兼容整数/字符串类型的输入
    num_str = str(number)
    # 提取从索引1开始、步长为2的字符(也就是第2、4、6...位数字)
    every_other_digits = num_str[1::2]
    # 用逗号连接成目标格式的字符串
    return ','.join(every_other_digits)

# 测试调用
print(credit_card(123456789))  # 输出:2,4,6,8

方式2:返回整数列表(方便后续对数字做计算)

如果你需要的是数字列表而非字符串,可以用列表推导式转换:

def credit_card(number):
    num_str = str(number)
    # 把每个字符转为整数,得到数字列表
    return [int(char) for char in num_str[1::2]]

# 测试调用,若要输出逗号分隔格式可以这样处理
result = credit_card(123456789)
print(','.join(map(str, result)))  # 输出:2,4,6,8

关键逻辑说明

  • str(number):确保不管输入是整数还是字符串,都能统一处理成可切片的字符串类型。
  • num_str[1::2]:这是Python的切片语法,[起始索引::步长],这里从索引1开始(对应数字的第2位),每2个字符取一个,正好拿到你需要的每隔一个的数字。
  • ','.join(...):把字符/数字列表用逗号连接成你期望的格式字符串。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:18:45