结合for和if循环

时间:2013-05-03 03:28:33

标签: python loops python-3.x

我有代码:

num_for_loops = 0
for line in lines:
    if line.strip().startswith('for '):
        num_for_loops += 1
return num_for_loops

我需要将其浓缩为尽可能少的线条。有没有办法通过组合for和if语句来做到这一点? 背景是无关紧要的。

2 个答案:

答案 0 :(得分:9)

num_for_loops = sum(line.strip().startswith("for ") for line in lines)

因为你马上回来num_for_loops我想你真的只想要

return sum(line.strip().startswith("for ") for line in lines)

答案 1 :(得分:3)

生成器表达式总能赢得简洁的代码竞赛:

return sum(1 for line in lines if line.strip().startswith('for '))

生成一系列1的长度等于以'for'开头的行数,对生成的列表求和,这样就可以解析数TB的数据而不会耗尽内存。