Нужно посчитать количество вхождений данных строк в операторе if

Поэтому в моей функции одно из утверждений if состоит в том, что строка не содержит более 1 вхождения строки в списке.

например:

list = ['a','b']

мне нужно проверить, содержит ли строка более одного из этих 2 символов, иначе она перейдет к следующему оператору if.

s = 'aloha'

s передаст оператор if, потому что b не в s.

s = 'abcd'

s должен потерпеть неудачу в этом операторе if, так как a и b находятся в s.

больше примеров, если это не достаточно ясно.

s = 'aaab'

это провалит оператор if и продолжит.

s = 'aaloh'

это также не удастся

мое заявление if было:

if s.count('a') == 1 or s.count('b') == 1:

Это если заявление не работает

мой вопрос, есть ли способ проверить это, не делая цикл for перед рукой?

1 ответ

Вам понадобится цикл for, но вы все равно можете сделать это одной строкой.

if sum(char in s for char in list) > 1:

Если вы хотите найти конкретные числа данного персонажа с некоторым порогом, поместите ваш список символов в dict лайк d = {'a': 1, 'b': 4},

if sum(s.count(char) >= count for char, count in d.items) > THRESHOLD:

Обновить

ОП прокомментировал, что он хочет

функция, которая делает что-то со строкой тогда и только тогда, когда в этой строке нет ни "a", ни "b" в строке. Он может иметь только одно из двух, а не оба, а также только одно вхождение.

Потому что в оригинальном посте ОП хотелось обобщить "а" и "b" на последовательность символов listЯ интерпретирую его значение, что он хочет выражения, которое возвращает True для строки s если и только если s имеет ровно одно вхождение ровно одного элемента списка символов list,

sum(s.count(char) for char in list) <= 1

В простом примере OP, list = ['a', 'b'],

Другие вопросы по тегам