Cравнение элементов списка с соседними элементами Python

не как не могу решить задачу есть сгенерированный список.

from itertools import product
from  more_itertools import unique_everseen

a = [1,2,3,4,5]
b = [11,12,13,14,15]
c = [21,22,23,24,25]
d = [31,32,33,34,35]
e = [41,42,43,44,45]

f = [45,44,43,42,41]

result = []
for subset in product(a, b, c, d, e, f):
  x = list(unique_everseen(subset))
  if len(x) == 6:
     result.append(x)

for i in result:
    print(i)

Сейчас список выглядит так, тобишь повторяет 3 и более цифры в одной комбинации....

[1, 11, 21, 31, 41, 45]
[1, 11, 21, 31, 41, 44]
[1, 11, 21, 31, 41, 43]
[1, 11, 21, 31, 41, 42]
[1, 11, 21, 31, 42, 45]
[1, 11, 21, 31, 42, 44]
......
..........
[5, 15, 25, 35, 45, 44]
[5, 15, 25, 35, 45, 43]
[5, 15, 25, 35, 45, 42]
[5, 15, 25, 35, 45, 41]
12500 комбинаций.

Суть задачи такая чтобы из уже имеющего списка (result) получить совершено разные комбинации и при условии что в каждой комбинации не будет повторяться 3 одинаковые цифры , также порядок списка должен остаться прежним..... Я думаю нужно каким то образом отсортировать полученные данные а вот как это сделать не могу придумать

Я хочу получить примерно такой результат:

[1, 11, 21, 31, 41, 45]    [1, 11, 21, 31, 41, 45]
[2, 12, 22, 32, 41, 44]    [2, 11, 21, 32, 41, 44]  
[3, 13, 23, 33, 41, 43]    [3, 11, 23, 33, 41, 43]
[4, 14, 24, 34, 41, 42]    [4, 14, 21, 31, 41, 42]
[5, 15, 25, 35, 42, 45]    [5, 11, 21, 35, 42, 45]
[6, 16, 26, 36, 42, 44]    [6, 12, 21, 32, 42, 44]

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

Автор решения: Виталий

Импорты тут лишние

    res=[]
    a = [1,2,3,4,5]
    b = [11,12,13,14,15]
    c = [21,22,23,24,25]
    d = [31,32,33,34,35]
    e = [41,42,43,44,45]
    f = [45,44,43,42,41]
    for i in (a,b,c,d,e,f):
        res.append(i)
    for i in res:
        print(i)#или print(*i)
→ Ссылка
Автор решения: TigerTV.ru

Что если таким образом:

from itertools import product

m = [[*range(1+i*10,1+i*10+5)] for i in range(5)]
m.append([*range(45,40,-1)])

*result, = product(*m)
len_m = len(m) * len(m) * len(m) + 1

for b in range(len_m):
    for i in result[b::len_m]:
        print(i)
→ Ссылка