2017-01-25 1 views
-1

Я хочу простую функцию, которая возвращает моды ряда, но и в случае п% п я хочу значения п вместо 0.уменьшая простую специальную моды функции в одну строки (логически только не третичный оператор)

моя функция идет:

def special_mod(m,n): 
    if m%n != 0: 
     return m%n 
    else 
     return n 

То, что я действительно хочу это одна логическая линия, которая не включает в себя условия. FYI: (т + 1)% п, т% (п + 1) не будет работать для всех входов (мои входы)

Логически я хочу что-то вроде этого

  1. оригинальный мод : 0 1 2 3 4 5 (для n = 6) что мне не нравится

  2. мой специальный мод: 6 1 2 3 4 5 (для n = 6) значение цикла переходит в 6 после 5 и 1 после 6

Может ли это быть реализовано без использования условия типа m! = N?

+0

Эти два кодовых блоков не имеют ту же логику, а второй один не действует Python. – TigerhawkT3

+0

О, простите, я не хочу этого, поэтому не пробовал его использовать. только что отредактировал (удалил этот раздел) –

+0

Есть ли какая-то причина, в частности, вы хотите этого? Существует много разных способов написания ветки, но без особых деталей трудно понять, почему вы принимаете некоторые и отвергаете других. – DSM

ответ

2

какой-либо причине: (m-1)%n+1 не будет работать, например .:

>>> n = 6 
>>> [(m-1)%n+1 for m in range(12)] 
[6, 1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5] 
+0

, что именно то, что я искал благодаря –

0

m%n or n или (m-1)%n+1 будет делать трюк.

+0

(m-1)% n + 1 это именно то, что искал спасибо –

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