2024-05-16 11:30:40 发布
网友
我有一个序列
range(0,50,3) [0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48]
这是我想生成的序列(每次不包括第3个元素),但能够从第n个数字开始和结束:
[1, 2, 4, 5, 7, 8, ...]
这个怎么样:
def inv_range(start, stop, step): for val in range(start, stop): if (val - start) % step != 0: yield val print list(inv_range(0,50,3))
这个指纹
[1, 2, 4, 5, 7, 8, 10, 11, ...
另外,如果您使用的是python2,请将range()替换为xrange(),以获得一个常量内存解决方案。你知道吗
range()
xrange()
对于这种特殊情况:
[x for x in range(50) if x % 3]
建立一个set的你想要排除的数字,并在一个完整范围的列表中测试:
set
>>> checkset = set(range(0, 50, 3)) >>> [x for x in range(50) if x not in checkset] [1, 2, 4, 5, 7, 8, 10, 11, 13, 14, 16, 17, 19, 20, 22, 23, 25, 26, 28, 29, 31, 32, 34, 35, 37, 38, 40, 41, 43, 44, 46, 47, 49]
将列表转换为一个集合并不重要,但是当您所做的只是比较时,它可以加快查找速度
这个怎么样:
这个指纹
另外,如果您使用的是python2,请将
range()
替换为xrange()
,以获得一个常量内存解决方案。你知道吗对于这种特殊情况:
建立一个
set
的你想要排除的数字,并在一个完整范围的列表中测试:将列表转换为一个集合并不重要,但是当您所做的只是比较时,它可以加快查找速度
相关问题 更多 >
编程相关推荐