雖然其他人已經告訴你如何解決你的方法,我會解釋你的前一個錯誤。
您的方法存在的問題是您的列表會更改每次迭代。所以你的元素的插入位置是相對於列表的當前長度。這是通過你的循環,基本上是做一個步:
>>> rev = []
>>> l = len('Hello') - 1
>>> l
4
>>> # first iteration
>>> rev.insert(l, 'H')
>>> rev
['H']
>>> l -= 1
>>> l
3
>>> # second iteration
>>> rev.insert(l, 'e')
>>> rev
['H', 'e']
>>> l -= 1
>>> l
2
>>> # third iteration
>>> rev.insert(l, 'l')
>>> rev
['H', 'e', 'l']
>>> l -= 1
>>> l
1
>>> # fourth iteration
>>> rev.insert(l, 'l')
>>> rev
['H', 'l', 'e', 'l']
>>> l -= 1
>>> l
0
>>> # Fifth iteration
>>> rev.insert(l, 'o')
>>> rev
['o', 'H', 'l', 'e', 'l']
>>> l -= 1
>>> l
-1
>>> # end
正如你可以看到,根據該列表是如何生長您的插入位置的變化。有時insert
的行爲類似於append()
,其他時候它的行爲可能跟insert()
一樣。
您可以通過使您的插入位置0
解決此問題。這樣,無論列表如何變化,您總是追加到列表的開頭:
rev.insert(0, c)
嘿。這很好。謝謝! – Vaibhav
@Vaibhav很高興幫助:) –
@Vaibhav如果這個答案對你有幫助,請考慮接受它,以便其他用戶知道你的問題有答案。 – Ajax1234