Срез списка по установленному шаблону
Возможно ли сделать срез списка по установленному шаблону? Необходимо шаговое извлечение, например, одного или другого кол-ва элементов с пропуском одного или другого кол-ва элементов. Пример:
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])