不使用循环(for/while)统计列表中数字7的出现次数
无循环统计列表中数字7的出现次数
给你两种无需手动编写for/while循环的实现方式,都能得到预期的8次结果:
方法1:字符串拼接统计
把列表里的所有数字转成字符串并拼接成一个整体,直接统计字符'7'的出现次数:
A = [7, 77, 777, 717] total = ''.join(map(str, A)).count('7') print(total) # 输出:8
思路:map(str, A)将每个数字转为字符串,''.join()把所有字符串拼接成"777777717",最后用count('7')直接得到总数。
方法2:使用reduce累加计数
借助functools.reduce来逐个处理列表元素,累加每个数字中7的次数:
from functools import reduce A = [7, 77, 777, 717] total = reduce(lambda acc, num: acc + str(num).count('7'), A, 0) print(total) # 输出:8
思路:reduce会遍历列表(底层迭代但无需你写循环),每次把当前数字中7的次数加到累加器acc里,初始值设为0,最终得到总和。
内容的提问来源于stack exchange,提问作者Kian Mashayekhi
相关产品推荐
相关产品推荐

