2015-12-30 4 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

あなたはkからn個を計算する方法を探していますか? '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

あなたは3つのループを持つことができますか?

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 * K、(n + 1)* K)に1つの 'N'個のループがあります。 –

+3

@ 1-近似:次に、何か何かが何であるか、そしてさまざまな何かが何か異なるかを明確にしなければならないでしょう。 – user2357112

+0

ありがとうございます。私はその質問を編集した。 –

関連する問題