Как избежать повторения кода после цикла?

). При использовании циклов мне часто приходится писать кусок кода дважды. Например, в то время как Проходя курс информатики Udacity, я написал код (для функции, которая находит наиболее последовательно повторяющийся элемент):

def longest_repetition(l):
    if not l:
        return None
    most_reps = count = 0 
    longest = prv = None
    for i in l:
        if i == prv:
            count += 1
        else:
            if count > most_reps:
                longest = prv
                most_reps = count
            count = 1
        prv = i
    if count > most_reps:
        longest = prv
    return longest

В этом случае я дважды проверяю, больше ли счетчик, чем ранее наиболее повторяющийся элемент. происходит как тогда, когда текущий элемент отличается от последнего, так и когда я достиг конца списка.

Я также сталкивался с этим несколько раз при разборе строки символ за символом. Также было несколько время, когда это было примерно до 5 строк кода. Это обычное явление или результат того, как я думаю/кодирую. Что мне делать?

изменить: Аналогично, в надуманном примере разделения строки:

def split_by(string, delimeter):
    rtn = []
    tmp = ''
    for i in string:
        if i == delimeter:
            if tmp != '':
                rtn.append(tmp)
                tmp = ''
        else:
            tmp += i
    if tmp != '':
        rtn.append(tmp)
    return rtn

изменить : Экзамен, из которого был взят этот экзамен, был написан для слушателей курса, от которых не ожидается каких-либо посторонних знаний о питон; только то, чему учили на предыдущих модулях. Хотя у меня есть предыдущий опыт работы с Python, я стараюсь придерживаться этих ограничений, чтобы получить максимальную отдачу от курса. Были изучены такие вещи, как str.split, списки и многие основы Python, но пока ничего об импорте, особенно о таких вещах, как groupby. При этом, как это должно быть написано без каких-либо языковых функций, которые, вероятно, не будут преподаваться на вводном курсе программирования.

15
задан mowwwalker 22 June 2012 в 04:58
поделиться