0
有人建議更換我:For循環效率,當使用枚舉或其他功能
for m in hazardflr:
safetiles.append((m, step))
i = 0
一個更合理的方法,如:
for i, m in enumerate(hazardflr):
safetiles.append((m, step))
如果有一種方法可以讓這個更有效,
我現在看到這是如何保存代碼行,並說同樣的事情。我不知道enum()
函數。我的問題是現在是否有任何其他修改我可以做,使這個代碼更有效率和行保存?
def missingDoor(trapdoor, roomwidth, roomheight, step):
safezone = []
hazardflr = givenSteps(roomwidth, step, True)
safetiles = []
for i, m in enumerate(hazardflr):
safetiles.append((m,step))
while i < len(safetiles):
nextSafe = safetiles[i]
if knownSafe(roomwidth, roomheight, nextSafe[0], nextSafe[1]):
if trapdoor[nextSafe[0]/roomwidth][nextSafe[0]%roomwidth] is "0":
if nextSafe[0] not in safezone:
safezone.append(nextSafe[0])
for e in givenSteps(roomwidth, nextSafe[0], True):
if knownSafe(roomwidth, roomheight, e, nextSafe[0]):
if trapdoor[e/roomwidth][e%roomwidth] is "0" and (e,nextSafe[0]) not in safetiles:
safetiles.append((e,nextSafe[0]))
i += 1
return sorted(safezone)
謝謝你抓到!我想當我迭代代碼時,我沒有考慮將它變成一個變量 – SteveZrg
在哪裏可以將set_var放在代碼中呢?我是否必須說完整的「item in set_ver」? – SteveZrg
@SteveZrg無需引入'set_ver',我編輯了我的答案:您應該將'safezone'初始化更改爲'safezone = set()' –