如何用偏移做python范围

时间:2015-08-03 18:41:54

标签: python

有没有办法使用范围函数进行以下偏移?

range(1,100, offset=10)
10,11,12,13...

换句话说,用范围进行偏移的最佳方法是什么?

3 个答案:

答案 0 :(得分:6)

当您包含两个参数时,range()的第一个参数是该范围的第一个元素:

offset = 10
for i in range(offset, 100 + offset):
    print(i)

如果您不希望终点也按偏移移动,只需从第二个参数中删除+ offset

答案 1 :(得分:0)

您可以使用map将偏移量应用于运行时的范围结果:

offset = 10
for i in map(lambda x: x + offset, range(100)):
    print(i)

将打印

10
11
...
108
109

答案 2 :(得分:0)

如果您使用numpy,则有一个非常简单而优雅的解决方案:

import numpy as np

a = np.arange(100)

offset = 10
stride = 1
idx = np.r_[1:2, 3:4, 6:8]*stride+offset

print(a[idx])
## [11 13 16 17]
a[idx] = 0
print(a[:20])
## [ 0  1  2  3  4  5  6  7  8  9 10  0 12  0 14 15  0  0 18 19]