Я работаю над функцией, которая, учитывая последовательность, пытается найти указанную последовательность внутри списка и затем должна возвращать элемент списка сразу же после завершения этой последовательности.Перезаписывание вложенных операторов if в более Pythonic
В настоящее время этот код возвращает элемент списка сразу после окончания последовательности, однако я не доволен тем, что у меня есть много вложенных if-утверждений, и мне бы хотелось переписать его, но я не могу понять, как обходите это, так как это совсем не похоже на все, что я когда-либо писал в прошлом, и чувствую себя немного из практики.
def sequence_in_list(seq, lst):
m, n = len(lst), len(seq)
for i in xrange(m):
for j in xrange(n):
if lst[i] == seq[j]:
if lst[i+1] == seq[j+1]:
if lst[i+2] == seq[j+2]:
return lst[i+3]
(Мое намерение состоит в том, чтобы затем распространить эту функцию так, что если эта последовательность встречается более чем один раз в течение всего списка он должен вернуть последующий элемент, что произошло наиболее часто после последовательности)
Является ли 'seq' строкой или списком в вашем случае? – rkrzr
, если у вас нет другого статута, вы всегда можете «слить», если операторы: 'list [i] == seq [j] и список [i + 1] == seq [j + 1] и список [i + 2] = = seq [j + 2] ' – noisy
Вы хотите получить все элементы, которые появляются после всех вхождений seq в' list'? И, пожалуйста, не используйте встроенные в качестве имени переменной. –