我习惯以这种格式看到For
循环:
for number in l:
sum = sum + number
我正在浏览一些论坛并遇到了这段代码:
count_chars = ".arPZ"
string = "Phillip S. is doing a really good job."
counts = tuple(string.count(d) for(d) in count_chars)
print counts
我不确定这是否真的是For
循环,所以我决定以我理解的方式重写它:
tuple(
for(d) in count_chars:
string.count(d))
毋庸置疑,它失败了哈哈。那么有人可以解释发生了什么,并解释我的逻辑愚蠢吗?谢谢!
答案 0 :(得分:4)
它不是for
循环,而是generator expression。它基本上做的是返回一个迭代器,其中每个元素是count_chars
中d
中每个字符出现的时间量tuple
。然后,它将所有这些元素添加到counts = []
for d in count_chars:
counts.append(string.count(d))
counts = tuple(counts)
。
(大致)相当于:
{{1}}