Перебираем список и находим, когда числа перестают увеличиваться с одинаковой скоростью

#python #list #loops

Вопрос:

У меня есть список чисел, которые изначально увеличиваются с одинаковой скоростью. Например:

 [0,3,6,9,12,15,18...]
 

Однако при достижении определенной точки в списке увеличение стоимости фактически увеличивается.

 [0,3,6,9,12,15,18...150,156,162,168,174...240]
 

Я хочу просмотреть этот список и создать два новых списка. Один, где число увеличивается на 3, и один, когда числа начинают увеличиваться на 6. Однако я не уверен, как именно написать код, который определяет, когда происходит это изменение.

Ожидаемый результат: [0,3,6,9,12,15,18…,147] [150,156,162,168,174…240]

Комментарии:

1. Какой у вас вопрос по поводу этой задачи?

2. Похоже, вы разобрались в логике (пройдите по списку, сгенерируйте два новых списка, в одном из которых каждый последовательный элемент имеет разницу в три, а в другом-разность в 6). Есть ли какая-то конкретная часть кодирования, на которой вы застряли?

3. Да, выясняю, как написать код, чтобы определить, когда числа перестают увеличиваться с одинаковой скоростью.

4. И что же вы выяснили?

5. Не уверен, о чем ты просишь. У меня есть четкое представление о том, чего я хочу достичь. Я просто не уверен, какую логику использовать, чтобы определить, когда числа перестают расти с одинаковой скоростью.

Ответ №1:

 def splitList(list):
    if(len(list) < 2):
        return [], []
    listX = []
    listY = []
    dif = list[1] - list[0]
    for e in list:
        if(e == list[0]):
            listX.append(e)
        elif(e - listX[len(listX)-1] == dif):
            listX.append(e)
        else:
            listY.append(e)
    return listX, listY
 

Ответ №2:

Проверить это?

 test_list=[0,3,6,9,12,15,18,21,27,33,39,45] #=== List 
list_3=[]
list_6=[]
new_list=[]
for j,i in enumerate(test_list): #=== Gives index number for each element in the list
    try: #== Check for exceptions, if one occurs, goes to 'except:' statement
        op=test_list[j 1] #== Get the elements from index position 1 ahead of the current ome
        if op-3==i: #== check if the the difference is 3
            
            list_3.append(i)
        elif op-6==i: #== check if the the difference is 6
            
            list_6.append(i)
    except:
        pass
new_list.append(list_3)
new_list.append(list_6)
print(new_list)