首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python:如何生成每隔4个数字跳过的范围?

Python:如何生成每隔4个数字跳过的范围?
EN

Stack Overflow用户
提问于 2018-08-03 08:57:49
回答 4查看 2K关注 0票数 3

我需要创建一个范围,跳过每4个数字,从5开始。例如,如果范围a是从1到20,那么数字5,9,13,17将被排除。

代码语言:javascript
复制
a = [1, 2, 3, 4, 6, 7, 8, 10, 11, 12, 14, 15, 16, 18, 19, 20]

我尝试的是创建一个常规范围,然后创建包含我想要跳过的数字的第二个范围,然后从第一个范围中删除第二个范围。

代码语言:javascript
复制
a = list(range(1,21))
b = list(range(5,21,4))
for x in b:
   if x in a:
      a.remove(x)

这是可行的,但不适用于非常大的范围。有没有更有效的方法呢?

EN

回答 4

Stack Overflow用户

发布于 2018-08-03 09:17:36

您可以使用下面的列表理解:

代码语言:javascript
复制
>>> print ([v for i, v in enumerate(range(1,21)) if i == 0 or i % 4 != 0])
[1, 2, 3, 4, 6, 7, 8, 10, 11, 12, 14, 15, 16, 18, 19, 20]
票数 2
EN

Stack Overflow用户

发布于 2018-08-03 09:28:41

如果我们考虑numpy

代码语言:javascript
复制
import numpy as np 
a=np.arange(1,21)
a[np.logical_or(a%4!=1,a==1)]
Out[209]: array([ 1,  2,  3,  4,  6,  7,  8, 10, 11, 12, 14, 15, 16, 18, 19, 20])
票数 1
EN

Stack Overflow用户

发布于 2018-08-03 09:10:05

也许是一组不同?

代码语言:javascript
复制
numItems = 21
r1 = set(range(1,numItems))
r2 = set(range(5,numItems,4))

r3 = list(r1 - r2)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51663979

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档