如何一次性检查字符串中的数字?如何简化数字出现次数校验代码?
简化数字出现次数检查的方案
方案1:一行搞定的all()+生成器写法
直接用all()函数结合生成器表达式,替代重复的count()调用,灵活适配检查范围:
- 仅检查数字1-8(和原代码逻辑一致):
all(s.count(str(d)) < 5 for d in range(1, 9))
- 检查所有0-9数字:
all(s.count(str(d)) < 5 for d in range(0, 10))
方案2:高效统计的Counter写法
如果字符串较长,多次调用count()会重复遍历字符串,效率偏低。用collections.Counter只需遍历一次字符串,就能统计所有字符的出现次数,再做检查:
from collections import Counter char_counts = Counter(s) # 检查所有数字的出现次数都不超过4次 all(char_counts.get(str(d), 0) < 5 for d in range(0, 10))
如果只需要检查1-8,把range(0,10)改成range(1,9)即可。char_counts.get(str(d), 0)是为了处理字符串中没有对应数字的情况,此时默认计数为0,不影响判断。
内容的提问来源于stack exchange,提问作者guculk
相关产品推荐
相关产品推荐

