我正在学习 Python,但我发现自己遇到了一些我不明白的瓶颈。
我在文件上写的部分很快,但迭代或者列表的创建真的很慢。
此代码段在不到一秒的时间内运行,这是不可能的。
我做错了什么? 谢谢
import sys
import time
t0=time.time()
arr=list(range(1,10000))
for i in arr:
arr[arr.index(i)]= 'dsaijhjsdha' + str(i) + '\n'
open("bla.txt", "wb").write(bytearray(''.join(arr),'utf-8'))
d=time.time()-t0
print ("duration: %.2f s." % d)
答案 0 :(得分:3)
import sys
import time
t0=time.time()
arr=list(range(1,10000))
for i in arr:
arr[i-1]= 'dsaijhjsdha' + str(i) + '\n'
open("bla.txt", "wb").write(bytearray(''.join(arr),'utf-8'))
d=time.time()-t0
print ("duration: %.2f s." % d)
看看上面的解决方案。 这将实现与您想要的相同的输出。
Output: duration: 0.02 s.
答案 1 :(得分:1)
您可以使用列表理解在一行中完成所有这些操作:
使用这个:
arr = ['dsaijhjsdha' + str(i) + '\n' for i in range(1, 10000)]
print(arr)
代替:
arr=list(range(1,10000))
for i in arr:
arr[arr.index(i)]= 'dsaijhjsdha' + str(i) + '\n'
使用 arr.index(i)
会不必要地增加计算成本。