如何使用Python reduce函数统计字符串中指定字符的出现次数?
使用reduce统计字符串中指定字符的出现次数
嘿,这问题我之前琢磨过,用reduce确实能实现!刚好借你的例子来一步步说清楚~
首先,reduce的核心就是累积操作:它会把一个函数依次应用到序列的每个元素上,每次都把上一次的结果作为下一次的输入,最后返回单个值——这正好符合你统计次数的需求,因为我们需要一步步累加目标字符出现的次数。
具体实现代码
from functools import reduce def count_target_char(input_str, target): # 用reduce做累积统计:初始累加器是0,每遇到目标字符就+1 return reduce(lambda acc, current_char: acc + 1 if current_char == target else acc, input_str, 0) # 测试你的示例 test_str = 'assntcs' target_char = 's' print(count_target_char(test_str, target_char)) # 输出:3
代码解释
- 我们给reduce传了三个参数:
- 一个lambda函数:第一个参数
acc是累加器(保存之前统计的总次数),第二个参数current_char是当前遍历到的字符串字符。如果当前字符等于目标字符,就把累加器加1,否则保持累加器不变。 - 要遍历的输入字符串
input_str。 - 累加器的初始值
0(因为一开始统计次数是0)。
- 一个lambda函数:第一个参数
额外小提示
其实Python里字符串本身就有count()方法,直接写test_str.count(target_char)也能得到3,代码更简洁。但既然你是在学习reduce的用法,这个实现刚好能帮你理解它的累积逻辑,非常适合练手~
内容的提问来源于stack exchange,提问作者Muthuraj
相关产品推荐
相关产品推荐

