如何在Python中快速生成连续与非连续数字序列?
Python中生成混合连续/非连续数字序列的简便方法
当然有,不用循环也能实现类似R的简洁写法,以下是几种常用方案:
- 列表拼接法:逻辑和R的写法最接近,直接把连续区间转成列表后和单个元素列表相加
numbers = list(range(1, 6)) + [8] + [12] + list(range(15, 20)) print(numbers) # 输出: [1, 2, 3, 4, 5, 8, 12, 15, 16, 17, 18, 19]
注意:Python的range是左闭右开区间,所以生成1-5的连续数需要写range(1,6),15-19对应range(15,20)。
- itertools.chain拼接:适合处理多个区间/元素,避免创建中间列表,效率更高
from itertools import chain numbers = list(chain(range(1, 6), [8], [12], range(15, 20))) print(numbers) # 输出: [1, 2, 3, 4, 5, 8, 12, 15, 16, 17, 18, 19]
- numpy拼接(适合数值计算场景):如果后续要做数值运算,用numpy的
concatenate更方便
import numpy as np numbers = np.concatenate([np.arange(1, 6), [8], [12], np.arange(15, 20)]).tolist() print(numbers) # 输出: [1, 2, 3, 4, 5, 8, 12, 15, 16, 17, 18, 19]
内容的提问来源于stack exchange,提问作者Gaurav Bansal
相关产品推荐
相关产品推荐

