Ответ 1
Если вы хотите узнать, содержится ли какой-либо элемент d
в paid[j]
, как вы буквально говорите:
if any(x in paid[j] for x in d): ...
Если вы также хотите знать, какие элементы d
содержатся в paid[j]
:
contained = [x for x in d if x in paid[j]]
contained
будет пустым списком, если в paid[j]
не содержится элементов d
.
Еще есть другие решения, если вы хотите еще одну альтернативу, например, получить первый элемент d
, содержащийся в paid[j]
(и None
, если элемент не содержится):
firstone = next((x for x in d if x in paid[j]), None)
BTW, так как в комментарии вы указываете предложения и слова, возможно, вам не обязательно нужна проверка строки (это то, что делают все мои примеры), потому что они не могут рассматривать границы слов - например, каждый пример скажет, что "cat" - это in
"obfuscate" (потому что "obfuscate" содержит "cat" в качестве подстроки). Чтобы разрешить проверки границ слов, а не простые проверки подстроки, вы могли бы продуктивно использовать регулярные выражения... но я предлагаю вам открыть отдельный вопрос по этому вопросу, если это то, что вам нужно, - все фрагменты кода в этом ответе, в зависимости от по вашим точным требованиям, будет работать одинаково хорошо, если вы измените предикат x in paid[j]
на более сложный предикат, такой как somere.search(paid[j])
для соответствующего объекта RE somere
.
(Python 2.6 или лучше - незначительные различия в 2.5 и ранее).
Если ваше намерение - это что-то еще, например, получение одного или всех индексов в d
элементов, удовлетворяющих вашему ограничению, есть и простые решения для этих разных проблем... но если вы на самом деле требуется так далеко от того, что вы сказали, мне лучше прекратить гадать и надеюсь, что вы уточните; -).