簡單易懂的使用zip
:
def range_sequence(start, stop, step):
return zip(range(start, stop, step), range(start+step, stop+step, step))
結果:
In [4]: list(range_sequence(0, 2000, 500))
Out[4]: [(0, 500), (500, 1000), (1000, 1500), (1500, 2000)]
注意,這可能包括在最後一個不必要的元素:
In [5]: list(range_sequence(0, 7864, 500))
Out[5]:
[(0, 500),
(500, 1000),
(1000, 1500),
(1500, 2000),
(2000, 2500),
(2500, 3000),
(3000, 3500),
(3500, 4000),
(4000, 4500),
(4500, 5000),
(5000, 5500),
(5500, 6000),
(6000, 6500),
(6500, 7000),
(7000, 7500),
(7500, 8000)]
(7500, 8000)
對可能不是你想要的。如果您只想在(7000, 7500)
處停留,則可以將stop+step
更改爲stop
。 如果最後一對應該是(7500, 7864)
那麼你必須做一些更COMPEX:
def range_sequence(start, stop, step):
result = list(zip(range(start, stop, step), range(start+step, stop, step))
if (stop - start) % step != 0:
last_fst_elem = result[-1][-1] if result else start
result.append((last_fst_elem, stop))
return result
結果:
In [15]: range_sequence(0, 7864, 500)
Out[15]:
[(0, 500),
(500, 1000),
(1000, 1500),
(1500, 2000),
(2000, 2500),
(2500, 3000),
(3000, 3500),
(3500, 4000),
(4000, 4500),
(4500, 5000),
(5000, 5500),
(5500, 6000),
(6000, 6500),
(6500, 7000),
(7000, 7500),
(7500, 7864)]
是什麼修正:塊的大小還是塊的數量? –
你能告訴我們你的企圖嗎? – aIKid
大小是固定的,例如j = 500。 – mparida