answer+=sum(S.count(i) for i in J) S、J都是字符串
sum 括号中是什么用法?咋就变成迭代对象了
我明白这句的意义,理解能完成的功能,但是找不到这种(for写在sum函数写法)的出处,不理解的点是for写在这个位置为什么会影响前面S.count(i)
(S.count(i) for i in J)就是计算出J中的各个字符在S中出现次数,最后计算的结果就是一个tuple,再用sum计算和
这么理解吧:
对于J中的字符串存在其字符集合,而i是这个集合的元素
S.count(i)就是求该集合中各个元素的出现在S中的次数
最后用sum()求和
迭代:通过for循环来遍历一个list或者tuple等,这种遍历就是迭代
list, tuple, dict, str等都属于可迭代对象
li = [1, 3, 5]
l = [i * 2 for i in li] # 这个是列表推导式,能理解吧,下面再用sum()对这个求和
s = sum(i * 2 for i in li) # 因为sum()可以对列表求和
如果你能理解上面这个用法,你就能明白你的问题了。
列表推导式在逻辑上相当于一个循环,只是形似更加简洁,[表达式 for 变量 in 序列或迭代对象]。建议你看看列表推导式。