gpt4 book ai didi

python - 需要了解这个 python 错误

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

我实际上正在使用以下 python 代码处理文本日志文件。即使在 mline 达到 EOF 后,它也会继续运行。

myfile = open("560A_HL_Japan_02_04_2016.txt", 'r')
mod_myfile = open("560A_HL_Japan_02_04_2016_modified.txt", "wb")
mfl = myfile.readlines()
mstring=''
for mline in mfl:
mli = mline.split()
for l in range(len(mli)):
if l >= 2: #second object
mstring += mli[l]+' '
mstring += '\n'
mod_myfile.write(mstring)
mod_myfile.close()

如果我对下面的代码稍作修改。它执行时没有任何问题

myfile = open("560A_HL_Japan_02_04_2016.txt", 'r')
mod_myfile = open("560A_HL_Japan_02_04_2016_modified.txt", "wb")
mfl = myfile.readlines()
for mline in mfl:
mli = mline.split()
for l in range(len(mli)):
if l == 2: #second object
mstring = mli[l]+' '
elif l > 2:
mstring += mli[l]+' '
mstring += '\n'
mod_myfile.write(mstring)
mod_myfile.close()

最佳答案

在第一个示例中,您将 mstring 初始化为循环外部的空字符串:

mstring = ''

然后在循环中不断添加到mstring:

mstring += mli[l]+' '

但是mstring永远不会重新初始化,因此它会变得越来越大,因此代码的执行时间会越来越长。

在第二个示例中,每次 l 等于 2 时都会重置 mstring:

if l == 2:                      #second object
mstring = mli[l]+' '

因为 mstring 会不时重置,所以第二个示例的性能更好。

其他一些观察结果:

使用 += 添加字符串并不能保证在所有版本的 Python 中都能提供最佳性能。考虑构建一个列表并在完成后调用 ''.join()。

不要使用l作为变量名,它在某些字体中看起来像1。

关于python - 需要了解这个 python 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36370105/

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