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)