首页 > 解决方案 > Python:如何生成一个序列,每个 m 个数字跳过 n 个数字

问题描述

我目前正在学习 Python,我已经看到使用list(range(start,stop,step))我们可以创建一个从start到的数字序列,在连续数字之间stop-1具有某个特定值。step

但我不知道是否有办法实现一系列数字,但跳过n每个m数字。

例如,如果我们有下一个数字列表:

list(range(0,20))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]

如果我们想跳过n=2每个m=3数字的数字,那么结果将是:

[0, 1, 2, 5, 6, 7, 10, 11, 12, 15, 16, 17]

或者,如果我们想跳过n=3每个m=5数字的数字,那么结果将是:

[0, 1, 2, 3, 4, 8, 9, 10, 11, 12, 16, 17, 18, 19]

我有办法吗?提前致谢!

标签: pythonrangesequence

解决方案


这是一个单行,每 m 个数字跳过 n 个:

result = [j for i in range(0,20, n+m) for j in range(i, m+i)]

推荐阅读