Я часто заканчиваю тем, что пишу немного кода при использовании циклов. Например, перейдя по курсу "Удипс", я написал код (для функции, чтобы найти наиболее последовательно повторяющийся элемент):
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 строк кода. Является ли это общим, или результатом того, как я думаю/код. Что мне делать?
edit: Аналогичным образом, в примере на основе форматирования строк:
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
edit: Экзамен, из которого это было написано, был написан для студентов курса, у которых не ожидается каких-либо внешних знаний о Python; только то, чему учили в предыдущих подразделениях. Хотя у меня есть предыдущий опыт работы на Python, я стараюсь придерживаться этих ограничений, чтобы максимально использовать курс. Преподавали такие вещи, как str.split, списки и множество основ Python, но ничего не было на импорте - особенно не такие вещи, как groupby. Это, как говорится, как это должно быть написано без каких-либо языковых особенностей, которые, вероятно, не будут преподаваться в курсе введения программирования.