Вместо фильтрации в вашем l oop, передайте итератор комбинации на filter()
. Использовать ваши данные немного сложно, поскольку вы не предоставили пример того, что у вас есть, но вот минимальный пример, который, надеюсь, даст вам достаточно идеи.
С filter()
вы просто даете ему лямбда-функцию, которая возвращает True для нужных комбинаций и False для тех, которые вам не нужны:
from itertools import combinations
values = list(range(10))
# all 5 element combinations of 0-9 such that the difference
# between the first and last is less than 6
combos = filter(lambda e: e[4] - e[0] < 6, combinations(values, 5))
for row in combos:
print(row, row[4] - row[0])
Печать:
(0, 1, 2, 3, 4) 4
(0, 1, 2, 3, 5) 5
(0, 1, 2, 4, 5) 5
(0, 1, 3, 4, 5) 5
(0, 2, 3, 4, 5) 5
(1, 2, 3, 4, 5) 4
(1, 2, 3, 4, 6) 5
(1, 2, 3, 5, 6) 5
...
(4, 5, 7, 8, 9) 5
(4, 6, 7, 8, 9) 5
(5, 6, 7, 8, 9) 4