2015-12-30 40 views
5

我有以下代碼。如何在python代碼中編寫這個算法?

for k in range((N + 1) * K): 
    if k >= 0 and k <= K-1: 
     # do something 
     # n = 0 
    elif k >= K and k <= 2*K-1: 
     # do something 
     # n = 1 
    elif k >= 2*K and k <= 3*K-1: 
     # do something 
     # n = 2 
    ... 
    ... 

'做點事情'很難解釋,但我用情感n = p取而代之。

我該如何明確地寫這個?更具體地說,如果k在p = 0到N的集合{p * K,...,(p + 1)* K-1}中,那麼做一些事情。我怎樣才能在代碼中做到這一點?

+0

您是否正在尋找一種方式來計算n的K + 'n = k // K' –

回答

3
for loop_id in xrange(N): 
    for i in xrange(K): 
     k = K * loop_id + i 
     do_smth(loop_id, i, k) 
+0

謝謝。如果我想讓循環保持在範圍內(K *(N + 1)),我還能做到嗎? –

+0

如果範圍[0,K *(N + 1)]適合您,您可以相應地將範圍限制(從我的代碼塊)更改爲N + 2和K + 1。如果你不想在範圍內有數字K *(N + 1) - 可能需要一些破解(即單獨處理這種情況)。 –

5

你可能只有三個循環,不是嗎?

for k in range(K): 
    # do something 
for k in range(K, 2*K-1): 
    # do something 
for k in range(2*K-1, (N+1)*K): 
    # do the rest 
+0

事實上,我有'N'個循環,每個範圍(n * K,(n + 1)* K)一個循環。 –

+3

@ 1-approximation:那麼你將不得不澄清'#do something'是什麼,以及各種'#做些什麼'彼此不同。 – user2357112

+0

謝謝。我編輯了這個問題。 –