Проверьте, составлены ли строки списком подстрок - PullRequest
1 голос
/ 13 апреля 2020

Использование python Я хочу напечатать все слова из списка, которые полностью состоят из меньших слов в отдельном списке. Например;

list1 = ('ABCDEFGHI', 'DEFABCGHI', 'ABCABCGHIABC', 'AACFFFGHI') 

list2 = ('ABC', 'DEF', 'GHI')

Из этих двух списков я пытаюсь получить окончательный вывод для печати; ('ABCDEFGHI', 'DEFABCGHI', 'ABCABCGHIAB C',) Поскольку эти строки из списка list1 полностью состоят из более коротких строк в списке 2. Но строка AACFFFGHI не должна печататься, так как она не состоит из комбинация этих более коротких строк.

Итак, чтобы попытаться уточнить, строки, которые я ищу из списка1;

  • Должны быть полностью составлены из строк из списка2
  • Может включать несколько вхождений строк из списка 2
  • Не нужно использовать все строки, перечисленные в списке 2

Я боролся с этим уже несколько дней и могу искать строки, составленные из отдельных символов в списке, но я изо всех сил пытаюсь найти строки, которые состоят из последовательностей символов. Любая помощь приветствуется. Marcus.

1 Ответ

1 голос
/ 13 апреля 2020

Самый простой способ, о котором я могу думать, это получить все permutations строк в list2. Вот один из способов сделать это:

  • Получить все перестановки строк в list2
  • join их в одну строку
  • Построить set из полученной итерации
  • Возьмите set.intersection с list1

from itertools import permutations

perms = set(map(''.join, permutations(list2, r=3)))
perms.intersection(list1)
# {'ABCDEFGHI', 'DEFABCGHI'}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...