Найти в списке смежные вложенные списки и объединить их в новый список
Помогите разобраться. Имеется основной список со вложенными списками:
a = [[1, 6], [5, 10], [6, 7], [9, 10]]
Необходимо сравнить каждый вложенный список друг с другом на наличие общего элемента и на выходе получить новый список в формате:
b = [[1, 6, 7], [5, 9, 10]]
Благодарю за помощь.
Ответы (2 шт):
Автор решения: strawdog
→ Ссылка
Можно так попробовать:
import numpy as np
a = [[1, 6], [5, 10], [6, 7], [9, 10]]
res = []
for i in range(len(a)-1):
for j in a[i:]:
if np.intersect1d(a[i], j).size > 0:
tmp = set(a[i]+ j)
if len(tmp) > 2:
res.append([*tmp])
получаем res:
[[1, 6, 7], [9, 10, 5]]
Автор решения: vl3d
→ Ссылка
Попробывал такой вариант:
import numpy
from itertools import groupby
array = numpy.array([[1, 6], [5, 10], [6, 7], [9, 10]]).astype(numpy.uint8)
res_array = []
for i in array:
array_i = numpy.array([]).astype(numpy.uint8)
for j in array:
if len(numpy.intersect1d(i, j)) > 0:
array_j = numpy.unique(numpy.concatenate([i, j]))
array_i = numpy.unique(numpy.concatenate([array_i, array_j]))
res_array.append(list(array_i))
res_array = sorted(res_array)
res_array = [i for i, _ in groupby(res_array)]
Результат:
[[1, 6, 7], [5, 9, 10]]