作者xji4y3ru (千眼萬雨)
看板Python
標題[問題] 如何優化迴圈的寫法
時間Mon Mar 1 17:15:51 2021
我寫了一個把檔案的位元順序顛倒之後再生成新檔案的程式,用的主要是list跟while,
程式碼如下:
-------------------------------------------
# -*- coding: utf-8 -*-
"""
Spyder Editor
This is a temporary script file.
"""
arr1=[]
f = open(r"D:/SSI/15070_c.i.png",'rb')
n = 0;
s = f.read(1)
while s:
arr1.insert(0,s)
s = f.read(1)
f.close()
tt=len(arr1)
print (tt)
f=open("D:/SSI/15070_c.i_.png",'wb')
n=0
while n<tt:
f.write(arr1[n])
n=n+1
f.close()
-------------------------------------------
檔案大小在100kb左右速度都還可以在數秒中完成,但是200kb就要十幾秒,500kb大約就
要1分鐘。請問是不是因為這個寫法太笨了,浪費太多時間?有什麼可以優化的作法嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 39.13.165.114 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Python/M.1614590153.A.614.html
推 handsomeLin: 一直用insert效率當然慢啊 03/02 03:27
→ xji4y3ru: 拍謝,新手自學很多眉角都不知道,是因為我一直insert到 03/02 11:58
→ xji4y3ru: list的第一個位置所以list的元素一直重新排序所以慢的嗎 03/02 11:59
推 s0914714: 舉例來說 要在list index=2的地方插入元素 03/02 16:12
→ s0914714: 必須把index=2(包含)之後所有元素往後移一位 03/02 16:13
→ s0914714: 再將要插入的元素填到index=2的位置 03/02 16:14