這是我正在撰寫的普通代碼,并且該代碼具有我想要的所需輸出
a = [1,1,2,3,5,8,4,13,21,34,55,89]
less5num = []
for i in a:
if i < 5:
less5num.append(i)
less5num.sort()
print(less5num)
Output
[1, 1, 2, 3, 4]
現在,如果我在 if 回圈中保持列印,我會得到一個數字金字塔
a = [1,1,2,3,5,8,4,13,21,34,55,89]
less5num = []
for i in a:
if i<5:
less5num.append(i)
less5num.sort()
print(less5num)
Output
[1]
[1, 1]
[1, 1, 2]
[1, 1, 2, 3]
[1, 1, 2, 3, 4]
如果我不列印 if 回圈,我會得到一個遞回數字金字塔
a = [1,1,2,3,5,8,4,13,21,34,55,89]
less5num = []
for i in a:
if i<5:
less5num.append(i)
less5num.sort()
print(less5num)
Output
[1]
[1, 1]
[1, 1, 2]
[1, 1, 2, 3]
[1, 1, 2, 3]
[1, 1, 2, 3]
[1, 1, 2, 3, 4]
[1, 1, 2, 3, 4]
[1, 1, 2, 3, 4]
[1, 1, 2, 3, 4]
[1, 1, 2, 3, 4]
[1, 1, 2, 3, 4]
為什么會這樣?
uj5u.com熱心網友回復:
在您的第一個代碼塊中,列印不在for回圈內,它在所有元素被迭代后執行,只有小于 5 的數字被添加到串列中并排序。
在您的第二個代碼塊中, print 位于內部loop,并且僅在 number 小于 5 時才執行,因此print執行的次數更少。
在您的第三個代碼塊中,您的列印位于 中for loop,但不在if塊內,因此當遇到每個元素時,都會發生列印,因此列印次數與串列中的數字一樣多。
uj5u.com熱心網友回復:
a = [1,1,2,3,5,8,4,13,21,34,55,89]
less5num = []
for i in a:
if i<5:
less5num.append(i)
less5num.sort()
# this print in loop but outside if statement
print(less5num)
您的列印在回圈中,但在 if 陳述句之外。這就是為什么所有迭代都在控制臺中列印
uj5u.com熱心網友回復:
如果在print回圈之外,它會列印一次串列,其中所有數字都小于 5。
如果它在內部,則if每次找到小于 5 的數字時列印一次串列。該串列是中間創建的,因此它會變得更大。
如果它在回圈內,則為回圈中的每個數字列印一次。
您可以使用pythontutor將其可視化。
uj5u.com熱心網友回復:
在第一個示例中:
串列中有 5 個元素小于 5,因此您將其列印 5 次。
[1,1,2,3,4]
在第二個例子中:
該串列在串列中的所有值之后列印。由于串列中有 12 個元素,因此您將其列印 12 次。
[1,1,2,3,5,8,4,13,21,34,55,89]
uj5u.com熱心網友回復:
謝謝大家,幫了大忙!!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/416330.html
標籤:
