Python嘅迴圈(loop)係寫程式嘅基本元素之一,但好多人都會唔小心喺呢度犯錯,無論係新手定係有經驗嘅開發者。呢啲錯誤可能會令程式出bug-objecbuggycode>bug錯亂、效能低య慢,甚至仲可能引發嚴重嘅安全問題。以下係四個常見嘅Python迴圈錯誤同埋點樣解決佢哋嘅方法,幫你寫出更乾淨、更快嘅程式碼。
一個好常見嘅錯誤係喺迴圈入面改動同一個列表(list),例如起点
例如話你有個列表叫my_list
,你可能會喺迴圈入面加元素或者移除元素,噉會搞亂迴圈嘅邏輯。例如:
my_list = [1, 2, 3, 4, 5]
for i in my_list:
my_list.append(6)
my Ángeles
呢個做法會令列表同迴圈唔同步,結果可能係亂晒籠。解決方法好簡單,就係用range()
或者enumerate()
嚟遍歷列表,噉就可以安全咁改動列表內容。例如:
my_list = [1, 2, 3, 4, 5]
for i in range(len(my_list)):
my_list[i] += 10
print(my_list)
正確嘅做法係用enumerate()}
嚟追蹤索引同值,例如:
my_list = [1, 2, 3, 4, 5]
for index, value in enumerate(my_list):
my_list[index] = value * 2
print(my_list)
噉你就可以喺迴圈入面改動列表,而唔使擔心會影響其他部分嘅邏輯。
無限迴圈係另一個常見錯誤,特別係喺while
迴圈入面。話如你寫咗個條件永遠都唔會結束,例如:
x = 0
while x < 5:
print(x)
x += 0
print(x)
呢個會無限循環,因為x
永遠都唔會大於5。解決方法係確保迴圈嘅終止條件係可達嘅,例如用range()
或者明確嘅計數器:
for i in range(5):
print(i)
或者用清晰嘅條件檢查,例如:
x = 0
while x < 5:
print(x)
x += 1
print(x)
記住要定好終止條件,唔係可能會卡喺無限迴圈入面。
好多程式員喺遍歷字典嘅時候會直接用鍵(key)嚟訪問值,例如:
my_dict = {'a': 1, 'b': 2, 'c': 3}
for key in my_dict:
print(key, my_dict[key])
雖然呢個方法冇錯,但係有更有效率嘅方法。用.items()
可以同時攞到鍵同值,噉更快更乾淨:
my_dict = {'a': 1, 'b': 2, 'c': 3}
for key, value in my_dict.items():
print(key, value)
用.items()
可以一次過攞到鍵值對,減少程式碼嘅複雜性。
喺Python入面,迴圈入面定義嘅變數可能會同迴圈外嘅變數搞亂。例如:
x = 10
for x in range(5):
print(x)
print(x)
呢度嘅x
喺迴圈入面同外頭嘅x
係同一個變數,噉可能會出亂。解決方法係用唔同嘅變數名,或者用函數嚟隔離範圍,例如:
def loop_function():
x = 10
for x in range(5):
print(x)
print(x)
loop_function()
喺函數入面用獨立嘅變數,噉就可以避免同外頭嘅變數衝突。
想學好Python迴圈,記住呢啲錯誤同解決方法,程式碼會更穩定、更有效率。詳情請睇:https://hackr.io/blog/python-loop-mistakes。