我正在寫一個個人專案,我發現自己陷入了困境。為了使事情更容易,代碼基本上是迭代和列印用戶的名字。在迭代時,我檢查getLastName選項是否啟用,如果它True然后將它添加到最終名稱字串。為了更好地理解,請檢查以下代碼:
listOfNames = [{ "firstName": "John", "lastName": "David" }, { "firstName": "Bob", "lastName": "Oliver" }]
getLastName = True
for data in listOfNames:
finalName = data["firstName"]
if getLastName:
finalName = f" - {data['lastName']}"
print(finalName)
現在的問題是,我的實際代碼非常復雜,并檢查了許多因素(MiddleName, coloredName, ...)。因此,在迭代時每次檢查都會降低性能,因為它會檢查許多因素并更改最終資料。在保持代碼優化和良好的同時,最好的方法是什么?
如果您對我要實作的目標感到困惑,請以以下代碼為例:
# Original data
listOfData = [..., ..., ..., ...]
# Options (or factors)
premiumStatus = True
colored = True
moderator = True
banAble = False
# Iteration
for data in listOfData:
finalData = ""
# Changes
if premiumStatus:
finalData = "."
if colored:
finalData = ".."
if moderator:
finalData = "..."
if banAble:
finalData = "...."
print(finalData)
這段代碼顯然很糟糕,因為它每次都檢查每個用戶的選項。
~謝謝
uj5u.com熱心網友回復:
第一個優化是在最后只構建一次字串,而不是不斷地連接它:
for data in listOfData:
finalData = []
if premiumStatus:
finalData.append('.')
...
print(''.join(finalData))
如果您知道 的確切格式,則listOfData可以預先構建模板字串,然后您可以在回圈內對其進行格式化:
listOfNames = [{ "firstName": "John", "lastName": "David", "number": 1}, { "firstName": "Bob", "lastName": "Oliver", "number": 2}]
getLastName = True
getFirstName = True
getNumber = False
template_parts = []
if getLastName:
template_parts.append("{lastName}")
if getFirstName:
template_parts.append("{firstName}")
if getNumber:
template_parts.append("{number}")
template_string = " - ".join(template_parts)
for data in listOfNames:
finalName = template_string.format(**data)
print(finalName)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/394326.html
上一篇:如何從兩個資料表中洗掉重疊序列?
下一篇:Numba并行代碼比順序代碼慢
