2015-12-30 3 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 * K, ..., (p + 1) * K-1} для p = 0 до N, то сделайте что-нибудь. Как я могу сделать это в коде?

+0

Вы ищете способ, чтобы вычислить п от к? '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-аппроксимация: тогда вам нужно будет уточнить, что такое '' что-то делать, и как различные '# делать что-то 'отличаются друг от друга. – user2357112

+0

Спасибо. Я редактировал вопрос. –

Смежные вопросы