Python список списков общих элементов итерации - PullRequest
0 голосов
/ 07 октября 2019
list= [[5, 4, 6], [6, 4, 5], [7, 1, 2]]

У меня есть приведенный выше список, я хочу сравнить каждый индекс списка, например [5,4,6], с [6,4,5] и [7,1,2], то есть с любым другим индексом списка

и для вывода: если он существуетлюбые общие элементы между двумя индексами в сравнении, тогда я хочу вывести в формате «первый элемент каждого индекса» вместе с любыми общими элементами в индексе.

ответом для этой итерации будет [5,4,6], поскольку 5 - первый элемент индекса в сравнении, 6 - первый элемент индекса в сравнении, 4 - общий элемент.

затем сравните [6, 4, 5] с [5,4,6] и [7,1,2], и ответ будет [6,5,4]

, затем сравните [7,1,2] с [5,4,6] и [6, 4, 5] иответ будет: [7]

Пожалуйста, помогите, я очень долго пытался.

В основном я хочу, чтобы каждый индекс списка проверял общие элементы со всеми остальными индексами списка, и если 2 спискау индексов есть что-то общее. Я хочу получить новый выходной список с первым элементом как индексами списка, так и общими элементами

final output= [[5,6,4],[6,5,4],[7]]

1 Ответ

1 голос
/ 07 октября 2019
myL = [[5, 4, 6], [6, 4, 5], [7, 1, 2]]
newLi = []

for i in range(len(myL)):  
  tmpLi = []
  firstList = myL[i]
  for a in range(len(myL)):
    if a != i:
      secondList = myL[a]
      inCommon = set(firstList).intersection(secondList)
      if len(inCommon) != 0:
        tmpLi.append(firstList[0])
        tmpLi.append(secondList[0])
        for b in inCommon:
          if b not in tmpLi:
            tmpLi.append(b)
  if len(tmpLi) == 0:
    tmpLi.append(firstList[0])
  newLi.append(tmpLi)
print(newLi)
...