有没有办法使用范围函数进行以下偏移?
range(1,100, offset=10)
10,11,12,13...
换句话说,用范围进行偏移的最佳方法是什么?
答案 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]