haniaman
@haniaman
Учусь на программиста

Как через каждые N элементов удалить N элементов из списка?

Допустим, есть список, где 10000 чисел, и надо сделать, чтобы через каждую тысячу чисел было удалено 300 последующих чисел. Как это можно реализовать?
  • Вопрос задан
  • 129 просмотров
Решения вопроса 1
0xD34F
@0xD34F
N = 1000
M = 300
NM = N + M

newArr = sum((arr[i * NM:(i + 1) * NM - M] for i in range(ceil(len(arr) / NM))), [])
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
aRegius
@aRegius
Python Enthusiast
import math
import itertools

data_for_test = list(range(1, 31))
ALL_MASK_VALS = 10
TRUE_MASK_VALS = 3
MASK_LEN = math.ceil(len(data_for_test)/ALL_MASK_VALS)
 
mask = (1 if i < TRUE_MASK_VALS else 0 for _ in range(MASK_LEN) for i in range(ALL_MASK_VALS))
result = list(itertools.compress(data_for_test, mask))

>>> result
[1, 2, 3, 11, 12, 13, 21, 22, 23]
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
deeplay Новосибирск
от 130 000 ₽
от 130 000 ₽
Enjoy PRO Санкт-Петербург
от 140 000 до 180 000 ₽
25 окт. 2020, в 04:58
2000 руб./за проект
24 окт. 2020, в 22:43
3000 руб./за проект