Python 组合for和if循环
我有密码:Python 组合for和if循环,python,loops,python-3.x,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语句来实现这一点? 上下文无关 num_for_loops = sum(line.strip().startswith("for ") for line in lines)
num_for_loops = 0
for line in lines:
if line.strip().startswith('for '):
num_for_loops += 1
return num_for_loops
我需要把它压缩成尽可能少的行。有没有办法通过组合for和if语句来实现这一点? 上下文无关
num_for_loops = sum(line.strip().startswith("for ") for line in lines)
由于您立即返回num\u for\u循环
我想您真的只是想
return sum(line.strip().startswith("for ") for line in lines)
生成器表达式始终赢得简明代码竞赛:
return sum(1 for line in lines if line.strip().startswith('for '))
这将生成一系列长度等于以“for”开头的行数的1,在生成时对列表进行求和,这样您就可以在不耗尽内存的情况下解析TB的数据。“我需要将其压缩为尽可能少的行”?为什么?上下文是相关的。微观优化:您只检查每行的开头(
.startswith('for')
),因此您可以将strip()
替换为lstrip()
。True
和False
的有趣转换为1和0.:-)谢谢,这正是我想知道的