gpt4 book ai didi

python - 重构具有多个条件的列表理解

转载 作者:行者123 更新时间:2023-12-01 01:01:48 25 4
gpt4 key购买 nike

def detect_long_method(directory):
path, dirs, files = next(os.walk(directory))
output = lm.output_long_methods(directory)
# print (output.stdout)
split_lines = output.splitlines()
output_lines = [output.decode('utf-8') for output in split_lines if len(output) > 3 and\
('R0915' in output.decode('utf-8') or 'R0913' in output.decode('utf-8') or 'R0912' in output.decode('utf-8') or \
'R0904' in output.decode('utf-8') or 'R0902' in output.decode('utf-8'))]

return output_lines

该函数的作用是,它运行命令行命令并获取标准输出并将其分配给变量output。它使用 .splitlines() 函数分割成行。

output_lines中,它检查每行(以字节为单位)是否包含单词R0915..etc.以及该行的长度是否超过3 ,然后最后将它们转换为字符串。

但是,这非常慢,我觉得有一种方法可以更整洁、更有效地编写它。

有什么帮助吗?

最佳答案

这是一个更有效的脚本:

import os
import re

def detect_long_method(directory):
path, dirs, files = next(os.walk(directory))
output = lm.output_long_methods(directory).decode('utf-8')
# print (output.stdout)
split_lines = output.splitlines()
output_lines = [output for output in split_lines if len(output) > 3 and\
re.search("(R0915|R0913|R0912|R0904|R0902)", output) is not None]
return output_lines

正如 juanpa.arrivilillaga 建议的那样,使用 regular expressions ,并且调用 decode('utf-8') 一次应该会导致更快的执行时间。

关于python - 重构具有多个条件的列表理解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55738543/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com