python for循環賦值問題
背景
寫代碼的時候,你會發現你的代碼越寫越多。
然而,功能需要也越來越多,然後你的冗餘代碼就多得不能再多瞭~~~怎麼辦,我太難瞭。
那就尋求一些高級寫法,一般的高級寫法都是盡可能地短。
另外,把重復的代碼抽取出來,封裝成函數,每次使用直接調函數即可。
For循環賦值
前提條件:我創建瞭一個road類,這個類裡面有這些屬性。我先初始化給road賦值,然後再把這些對象放到roadObjList集合裡面。
目標:從roadObjList集合裡面取出每個road對象的objectid值,然後放入到新的列表裡面。
class road(): def __init__(self,gid,objectid,name,width,direction,speed,type,snode,enode,length,startX,startY,endX,endY): self.gid= gid self.objectid = objectid self.name = name self.width = width self.direction = direction self.speed = speed self.type = type self.snode = snode self.enode = enode self.length = length self.startX = startX self.startY = startY self.endX = endX self.endY = endY
寫法一:
objList = [] for r in roadObjList: objList.append(r.objectid)
寫法二:
objList = [r.objectid for r in roadObjList]
我補充幾句
關於for循環遍歷的寫法,還有好幾種,雖然寫法很low,但是效果都是差不多的。
寫法一:
for i,ele in enumerate(roadPointObjList): print(i) print(ele)
寫法二:
for i in range(0, len(roadPointObjList)): print(i) print(roadPointObjList[i])
總結
我覺得兩種寫法其實都是一樣的,時間復雜度都是O(n),畢竟都要遍歷for循環。
隻是第二種寫法一步到位,當然如果要在for循環裡面作判斷的話,那就選第一種寫法瞭。
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- pytorch 液態算法實現瘦臉效果
- Android實現繪制折線圖APP代碼
- JavaScript實現頁面動態驗證碼的實現示例
- C#仿QQ實現簡單的截圖功能
- JavaScript實現移動端禁止下拉露出網址廣告屏蔽技巧