gpt4 book ai didi

python - 练习程序性能优化

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:07:50 27 4
gpt4 key购买 nike

我正在用 python 编写简单的练习程序。简而言之,需要使用这些分隔符从给定的字符串中拆分输入文本:, ; : 。 ! ( ) "'\/[ ] 空格到单词列表中。然后我只需要打印小写单词、大写单词和混合大小写单词。

这是我的解决方案:

import re
import time

text = input()
start_time = time.time()

list_of_words = list(re.findall(r"[\w']+", text))

lower_cases_list = [word for word in list_of_words if word.islower()]
upper_cases_list = [word for word in list_of_words if word.isupper()]
mixed_cases_list = [word for word in list_of_words if not word.islower() and
not word.isupper()]

print('Lower-case:', ', '.join(lower_cases_list))
print('Mixed-case:', ', '.join(upper_cases_list))
print('Upper-case:', ', '.join(mixed_cases_list))
print("--- %s seconds ---" % (time.time() - start_time))

到目前为止一切顺利,它工作正常,但在我测试任务的平台上,允许的执行时间为 0.100 秒,在最佳情况下我的程序执行时间为 0.134 秒。谁能帮我优化代码以获得最佳性能?

最佳答案

你重复了你的话三遍。使用单个 for 循环执行一次:

for word in list_of_words:

if word.islower():
lower_cases_list.append(word)
elif word.isupper():
upper_cases_list.append(word)
else:
mixed.append(word)

此外,由于现在您只需遍历 list_of_words 一次,您实际上不必制作列表,只需使用生成器即可,从而节省更多时间:

list_of_words = re.findall(r"[\w']+", text)

关于python - 练习程序性能优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54243642/

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