Как найти общие строки в элементах одного и того же списка (не используя пересечение)

#python

#python

Вопрос:

У меня есть список, подобный

 a=['foo', 'boo', 'foo_ext', 'doo']
  

Я хочу найти, есть ли у меня элементы, которые отличаются на заданную строку, например, _ext в моем случае — поэтому вывод должен возвращать, что у меня есть ‘foo’ и ‘foo_ext’

Я пробовал с пересечением, но это возвращает точные совпадения, а не «частичные», как мне нужно..

Комментарии:

1. почему foo и foo_ext считаются общими, а остальные 3 имеют общие строки, кроме одной буквы?

2. что, если одна из строк '_extfoo' ?

Ответ №1:

Вы можете найти эти элементы следующим образом

 for i in range(len(a)):
    for j in range(i 1,len(a)):
        if a[i] in a[j] or a[j] in a[i]:
            print(a[i],a[j])
  

Результат таков foo foo_ext .

Редактировать: я не уверен, что это ответ на вашу проблему. Вам нужны только элементы, которые отличаются конкретной строкой _ext ?

Комментарии:

1. Правильно, они должны отличаться определенной строкой