我想在一個表中進行反向回圈,并將表中的專案連接成一個字串。
t = [0, 0, 2, 6, 14, 4, 7, 0]
for i in range(len(t) -1, 0, -1)。)
res = str(t[i]) res
return res
它列印的是02614470而不是002614470。
我知道如果我把回圈引數中的0改為-1,它將正常作業,但我想了解為什么。似乎當我想用-1作為步長時,中間的引數(本例中為0)會增加 1。因此,舉例來說,如果我想讓回圈在索引1處停止,我必須在引數中寫入0。是這樣嗎?
這是我的思考程序,但我不知道它是否正確。
uj5u.com熱心網友回復:
使用range()的for回圈的典型結構是:
t=[0,0,2。 6,14,4,7, 0]
for i in range(0,len(t))。
print(f"{i}, {t[i]}"/span>)
這對迭代一個從零開始且長度為len()的專案串列是有意義的。由于我們從零開始,我們必須在比 len(t) 回傳的值少一個的地方停止,所以 range() 是為了適應這種最常見的情況。正如你在案例中所指出的,由于你是反轉的,所以你必須遍歷并使用-1來捕獲串列中的第0個索引。
t=[0,0,2, 6,14,4,7, 0]
for i in reversed(range(0, len(t))。
print(f"{i}, {t[i]}"/span>)
uj5u.com熱心網友回復:
范圍內的第二個引數是一個stop值,所以它被排除在生成之外。
例如,當你做 range(10) 時,Python 將其處理為 range(0,10) 并產生值 0,1,2,...,7,8,9 (即不是 10)
反過來說,如果你想讓零被包括在內,你必須將停止值設定在零之后的下一個較低的值(即-1)
。uj5u.com熱心網友回復:
其他答案解釋說,range不包括末端數字。無論范圍是向前還是向后,它總是在終點前停止一個。
我想在這里解釋一下。
我想補充一些寫回圈的 "Pythonic "方法。作為一條經驗法則,盡量避免在串列indices上回圈,而是直接在items上回圈。
things = [...] 。
# Forward over items。
for thing in things。
print(thing)
# backward over items[/span]。
for thing in reversed(thing):
print(thing)
如果你想要索引,請使用enumerate。它將索引附加到每個專案上,所以你可以同時在兩個專案上回圈。沒有必要使用range或len。
# Forward over items, with indices
for i, thing in enumerate(things):
print(i, thing)
# backward over items, with indices[/span]。
for i, thing in reversed(enumerate(thing))。
print(i, thing)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/325705.html
標籤:
