Чтобы получить слова, попробуйте, например,
dl = DictionaryLookup[];
Select[dl,
StringFreeQ[#, ___ ~~ "ies" ~~ ___] &&
StringMatchQ[#, ___ ~~ "loll" ~~ ___] &]
(*
-> {"loll", "lolled", "lolling", "lollipop", "lollipops", "lollop", "lolloped", "lolloping", "lollops", "lolls", "lolly"}
*)
, и вы можете сосчитать их, добавив //Count
в конце (скажем).
РЕДАКТИРОВАТЬ: Кажется, я неправильно понял ваш вопрос,Если то, что вы спрашиваете: подсчитайте, сколько раз «канапе» появляется в списке, который не включает «модифицируемый», тогда:
dl2 = {"titivation", "curving", "doppelgangers", "objurgations",
"canapes", "invaluable", "modifiable", "dissect", "ominousness",
"sentinel"}
If[Not@MemberQ[dl2, "modifiable"], Count[dl2, "canapes"], False]
(*
-> False
*)
, а
If[Not@MemberQ[dl2, "plate"], Count[dl2, "canapes"], False]
исключая "табличку", таким образом, давая 1 для этого списка.
Но я смущен вашими комментариями ("Этот код возвращает предварительный выбор списков, по которым я выполняю другие поиски, поэтому мне нужнооставьте список в целости и сохранности "какой список? все они сохраняются в целости с помощью приведенного выше кода), поэтому я все равно должен что-то упустить.