извлечь значение из списка после появления числа через определенное время

У меня есть такой список, где есть несколько повторяющихся записей в группах длиной 3 или более:

[1,2,1,1,1,2,3,4,1,2,5,1,1,1,1,1,1,2,4,1,3,5,2,2,6,4,1,6,1,1,3,5,2,2,6,4,1,6,2,7,2,6,1,1]

                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

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

Извлечение в точку с условием такое же, как указано выше. И список всегда будет начинаться с 1,3 или 4

Я ищу более быстрые решения, чем использование цикла.

Ожидаемый результат - список:

[1,2,4,1,3,5,2,2,6,4,1,6,1,1,3,5,2,2,6,4,1,6,2,7,2,6,1,1]    
-8
задан smci 4 September 2019 в 20:36
поделиться

1 ответ

Может использовать np.roll для нахождения последнего индекса трех последовательных значений.

import numpy as np

idx = ((l == np.roll(l, 1)) & (l == np.roll(l, 2))).cumsum().argmax()

l[idx:]
#[1, 2, 4, 1, 3, 5, 2, 2, 6, 4, 1, 6, 1, 1, 3, 5, 2, 2, 6, 4, 1, 6, 2, 7, 2, 6, 1, 1]
3
ответ дан ALollz 6 September 2019 в 06:13
поделиться
  • 1
    Пропавшие без вести запаздывания paren на первом добавляют, также выходит из строковых границ – Stephen 11 February 2009 в 15:07
Другие вопросы по тегам:

Похожие вопросы: