Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 组合for和if循环_Python_Loops_Python 3.x - Fatal编程技术网

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.:-)谢谢,这正是我想知道的