所以在我的函数中,我的一个if语句是字符串在列表中没有多于1次出现的字符串。
例如:
list = ['a','b']
我需要检查字符串中是否包含多个这两个字符,否则它将转到下一个if语句。
s = 'aloha'
将传递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:
此if语句不起作用
我的问题是,有没有办法在不事先进行for循环的情况下检查这个?
答案 0 :(得分:2)
你需要一个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:
OP评论说他想要一个
一个函数,当且仅当该字符串不具有' a'和' b'在字符串中。它只能有两个而不是两个,也只有一个出现。
因为OP的原始帖子想要推广' a'和' b'对于一系列字符list
,我解释他的意思是他想要一个表达式True
表示字符串s
当且仅当s
恰好出现一次正好是一个字符列表list
的一个元素。
sum(s.count(char) for char in list) <= 1
在OP的简单示例中,list = ['a', 'b']
。