Срез списка по установленному шаблону

Возможно ли сделать срез списка по установленному шаблону? Необходимо шаговое извлечение, например, одного или другого кол-ва элементов с пропуском одного или другого кол-ва элементов. Пример:

list_a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Желаемый результат: [1, 2, 5, 6, 9, 10]

Ответы (2 шт):

Автор решения: SergFSM

можно с помощью библиотеки itertools:

from itertools import compress

list_a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
pat = [1,1,0,0,1,1,0,0,1,1] # шаблон

list(compress(list_a, pat)) # [1, 2, 5, 6, 9, 10]
→ Ссылка
Автор решения: passant
list_a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
pat = [1,1,0,0,1,1,0,0,1,1]

y=[x for i,x in enumerate(list_a) if pat[i]!=0]
print(y)

Результат:

[1, 2, 5, 6, 9, 10]

И никаких дополнительных библиотек.

А вот если бы массив был бы очень большой - тогда попробовал бы ускориться с помощью numpy:

import numpy as np
list_n=np.array(list_a)
pat_n=np.array(pat,dtype=bool)
print(list_n[pat_n])
→ Ссылка