). При использовании циклов мне часто приходится писать кусок кода дважды. Например, в то время как Проходя курс информатики 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. При этом, как это должно быть написано без каких-либо языковых функций, которые, вероятно, не будут преподаваться на вводном курсе программирования.