Если вы хотите узнать, содержится ли любой элемент 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)
Кстати, поскольку в комментарии вы упоминаете предложения и слова, может быть, вы не обязательно хотите проверять string (что и делают все мои примеры), потому что они не могут учитывать слово границы - например, каждый пример скажет, что «cat» имеет значение in
«obfuscate» (потому что «obfuscate» содержит «cat» в качестве подстроки ). Чтобы разрешить проверки границ слов, а не простые проверки подстрок, вы можете продуктивно использовать регулярные выражения ... но я предлагаю вам открыть отдельный вопрос на этот счет, если это то, что вам требуется, - все фрагменты кода в этом ответе, в зависимости от по вашим точным требованиям будет работать одинаково хорошо, если вы измените предикат x in paid[j]
на более сложный предикат, такой как somere.search(paid[j])
, для соответствующего объекта RE somere
.
(Python 2.6 или выше - небольшие различия в 2.5 и более ранних версиях).
Если ваше намерение является чем-то другим, например, получение одного или всех индексов в d
элементов, удовлетворяющих вашему ограничению, то есть и простые решения для этих разных проблем ... но если то, что вам действительно нужно, настолько далеко от того, что вы сказали, я бы лучше перестал догадываться и надеюсь, что вы проясните; -).