Я пытаюсь написать функцию, которая берет список целых чисел и находит в ней все арифметические последовательности.Арифметические последовательности в Python
A = [-1, 1, 3, 3, 3, 2, 1, 0]
Есть пять арифметических последовательностей в этом списке: (0, 2), (2,4), (4, 6), (4,7), (5,7)
- это индексы первого и последнего элемента последовательности. Последовательность определяется разницей между элементами.
Как видно из приведенного выше примера, последовательность должна быть длиннее 2 элементов (иначе она найдет последовательность между каждыми двумя элементами).
Функция, которую мне нужно писать должен возвращать число последовательностей он находит в списке - в этом случае он должен вернуть 5.
Я вроде застрял - попробовал несколько различных подходов, но с треском провалились , Самое последнее, что я сделал это:
def solution(A):
slices = []
x = 0
listlen = len(A)
while x < listlen-1:
print ("Current x:", x)
difference = A[x+1] - A[x]
#print ("1st diff: ", A[x+1], ",", A[x], " = ", difference)
for y in range(x+1, len(A)-1):
difference_2 = A[y+1] - A[y]
#print ("Next Items: ", A[y+1], A[y])
#print ("2nd diff: ", difference_2)
if (difference == difference_2):
#print ("I'm in a sequence, first element at index", x)
else:
#print ("I'm leaving a sequence, last element at index ", y)
slice = str(x) + "," + str(y)
slices.append(slice)
x += 1
#print ("Changing X to find new slice: x:", x)
break
print (slices)
я испортил что-то перебор X, в данный момент время, это бесконечный цикл.
Как получить последовательность? –
И что вы пробовали? –
Элементы формируют последовательность, если разница между последовательными элементами одинакова - здесь вы можете видеть, что между элементами индексов 0, 1 и 2 разница равна 2 - таким образом, это последовательность. То же самое касается (2,4) - разность 0 = последовательность. – mr0