Нужно посчитать количество вхождений данных строк в операторе 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']
,