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

如何用Python列表推导式生成从p开始的b个元素序列?

问题分析与解决思路

首先,你的代码出现重复结果的原因很明确:在列表推导式[p+1 for i in range(b)]里,你没有用到循环变量i——不管循环执行多少次,每个元素都是固定的p+1,所以调用raw(10,4)自然会得到四个11。

接下来分两种情况解决:

情况1:需求是生成从p开始的连续b个整数

如果你的示例是笔误(比如原本想返回[10,11,12,13]),那只需要在推导式里把p+1改成p + i,利用循环变量i来实现递增:

def raw(p, b):
    return [p + i for i in range(b)]

调用raw(10,4)就会返回[10,11,12,13],完全符合“以p为起始、包含b个元素的数值列表”的描述。

另外还有个更简洁的写法,直接用Python内置的range函数转换为列表:

def raw(p, b):
    return list(range(p, p + b))

效果和上面的列表推导式完全一致。

情况2:示例是正确的(需要跳过p+2这个数)

如果你的示例确实是要返回[10,11,13,14],那说明需求是从p开始生成b个元素,但要跳过p+2。这时候可以用循环来手动控制递增逻辑,遇到需要跳过的数时额外加1:

def raw(p, b):
    result = []
    current = p
    for _ in range(b):
        result.append(current)
        current += 1
        # 当current刚好是p+2时,跳过这个数
        if current == p + 2:
            current += 1
    return result

这样调用raw(10,4)就会得到[10,11,13,14]。如果后续有更通用的跳数规则,还可以根据规则调整判断条件。

内容的提问来源于stack exchange,提问作者Christopher Martínez Bernal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:13:19