[英]Why doesn't the different indentation of two functions' return statements produce different results?
我被要求編寫一個Python函數來確定列表是否已排序。 我有兩個版本:
def is_sorted(t):
for i in range(len(t) -1 ):
if t[i] <= t[i + 1]:
return True
return False
def is_sorted(t):
for i in range(len(t) -1 ):
if t[i] <= t[i + 1]:
return True
return False
這兩者有什么區別? 我在第一個縮進時return False
。 但是,它們都產生相同的結果。 它們之間有任何明顯的差異嗎?
這些都不符合你的要求。 隨着第一,只有前兩個項目進行比較,因為你return
在循環的第一次迭代,從而不管前兩個項目是否(雖然你返回在這些情況下,不同的結果)。 for
循環並沒有真正做任何事情。 對於第二個項目,只有在它們出現故障時才會繼續比較項目,因為您在第一次看到有序的對時從函數返回。
你想要的是當物品亂序時立即返回False
(因為一旦你發現一對物品亂序,你知道列表沒有排序而且不需要再檢查)並且只在對是按順序返回True
您已檢查所有項目之后。 像這樣:
def is_sorted(t):
for i in range(len(t) - 1):
if t[i] > t[i + 1]:
return False
return True
或者,使用Python的內置all()
函數和生成器表達式:
def is_sorted(t):
return all(t[i] <= t[i + 1] for i in range(len(t) - 1))
你應該考慮縮進的影響 - 即你的return False
語句屬於什么阻止。
False
。 False
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.