Я бы определил вспомогательный метод, который может обрабатывать условие:
def max_consecutive(array, odd_even):
remainder = {'odd':1,'even':0}
count, max_count = 0, 0
for e in array:
if e%2 == remainder[odd_even]:
count +=1
else:
count = 0
max_count = max(count, max_count)
return max_count
Для использования в понимании списка:
array = [[1,2,3],[1,2,5,6,8],[2,4,6,9,7],[1,3],[2,4,3,6,8,2]]
[max_consecutive(sub, 'even') for sub in array]
#=> [1, 2, 3, 0, 3]
[max_consecutive(sub, 'odd') for sub in array]
#=> [1, 1, 2, 2, 1]