You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Python实现从10到3010数字序列每3项选取1项存入列表的算法问题排查

问题分析与解决

我来帮你排查这个问题!你的思路方向是对的,但代码里的计数器逻辑有个小疏漏,导致后续数字都没被正确添加进来。

问题出在哪?

看你的代码:第一次循环时,i=1触发第一个if,把10加入列表,然后i变成2。这时候第二个if判断i==4不成立,i就保持2。

接下来的每一次循环里,i一直是2——第一个ifi==1)不触发,第二个ifi==4)也不触发,i再也不会被递增或重置。自然只有10被加入列表了。

修复方案1:修正计数器逻辑

把计数器的递增操作移到每次循环的末尾,确保每一次迭代都能更新计数器:

excluded_values = []
i = 1
for index in range(10, 3010):
    if i == 1:
        excluded_values.append(index)
    # 每次循环都递增计数器
    i += 1
    # 达到4时重置为1
    if i == 4:
        i = 1

这样计数器会按1→2→3→1→2→3...的规律循环,每3个数字就会触发一次添加操作。

修复方案2:更Pythonic的写法(无需计数器)

其实Python的range本身支持步长参数,完全可以不用额外计数器,直接生成你需要的序列:

# 从10开始,每次跳3个,直到3010(不包含)
excluded_values = list(range(10, 3010, 3))

这种写法更简洁高效,也避免了手动维护计数器可能出现的逻辑错误。

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

火山引擎 最新活动