Если второе слово в каждом элементе списка совпадает с первым словом в любых других элементах списка, их следует объединить в один элемент. Порядок также имеет значение.
Код: Выделить всё
['A B C D E G', 'X Y Z']
Буквы не образуют цикл, т. е. ['A B', 'BC', 'CA'] это невозможно.
Что касается того, почему G был добавлен в конце, предположим, что мы находимся в позиции «AB C» и видим «C D»< /код>. И далее в списке у нас есть «C G». Мы добавляем «C D», так как он идет первым, поэтому у нас есть «A B C D», а затем, если есть «DE» , мы объединяем его с «AB C D E». код>. Теперь в конце «цепочки» мы добавляем «C G», и у нас получается «AB C D E G». Если бы было «B H», поскольку B идет первым, то это было бы «AB C D E H G».
Поскольку порядок имеет значение , ['A B', 'CA'] по-прежнему остается ['A B', 'CA'], поскольку B не подключается к C.
Другой пример:
Если у нас есть ['A B', 'AC'], затем на шаге 1 у нас есть просто A B, а затем мы видим A C и объединяем его с A B, и у нас есть A B C >.
Я пробовал много вещей, например разбивать каждый элемент на два списка, затем индексировать, удалять и т. д. Это слишком сложно, и я чувствую, что должен быть более интуитивный способ решить это на Python. Увы, я не могу этого понять.
Подробнее здесь: https://stackoverflow.com/questions/661 ... -condition