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

如何用Pythonic方式实现可定制的交替整数序列生成函数?

实现交替整数列表的Pythonic方式

这里有几种简洁的Pythonic实现,满足你创建形如[-1, 1, -2, 2, ..., -n, n]列表的需求:

方法1:嵌套列表推导式

这是最直观的简洁写法,通过双层循环展开每个整数对应的正负对:

def alternating_range(n):
    return [num for i in range(1, n + 1) for num in (-i, i)]

测试示例:

print(alternating_range(2))  # 输出 [-1, 1, -2, 2]
print(alternating_range(10)) # 输出 [-1, 1, -2, 2, ..., -10, 10]

方法2:利用itertools.chain展开序列

如果需要处理较大的n,用itertools可以避免创建中间元组列表,更节省内存:

from itertools import chain

def alternating_range(n):
    return list(chain.from_iterable((-i, i) for i in range(1, n + 1)))

chain.from_iterable会直接迭代每个(-i,i)元组里的元素,无需先构建完整的元组列表。

方法3:生成器函数(内存友好型)

如果不需要一次性生成完整列表,生成器函数可以按需产出元素,尤其适合超大n的场景:

def alternating_range(n):
    for i in range(1, n + 1):
        yield -i
        yield i

# 调用时转成列表
print(list(alternating_range(3)))  # 输出 [-1, 1, -2, 2, -3, 3]

这些写法都比普通for循环更符合Python的简洁风格,你可以根据实际场景选择最适合的方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 05:35:30