我有代码:
num_for_loops = 0
for line in lines:
if line.strip().startswith('for '):
num_for_loops += 1
return num_for_loops
我需要将其浓缩为尽可能少的线条。有没有办法通过组合for和if语句来做到这一点? 背景是无关紧要的。
答案 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的数据而不会耗尽内存。