我正在做一個編碼練習:給定一個整數序列作爲數組,確定是否可以通過從數組中刪除不多於一個元素來獲得嚴格遞增的序列。爲什麼我的代碼會引發錯誤?
所以我寫了這個代碼:
def almostIncreasingSequence(sequence):
first_list, second_list = sequence, sequence
for i in range(len(sequence)-1):
if sequence[i] >= sequence[i+1]:
first_list.remove(sequence[i])
second_list.remove(sequence[i+1])
break
if first_list == sorted(set(first_list)) or second_list == sorted(set(second_list)):
return True
else:
return False
下面這段代碼似乎在大多數序列工作,但是這一次尤其引發錯誤:
print almostIncreasingSequence([1,3,2])
的錯誤是如下:
Traceback (most recent call last):
file.py3 on line ?, in getUserOutputs
userOutput = _runsppge(testInputs[i])
file.py3 on line ?, in _runsppge
return almostIncreasingSequence(*_fArgs_lujxeukjlbwc)
file.py3 on line 7, in almostIncreasingSequence
second_list.remove(sequence[i+1])
IndexError: list index out of range
我只是不明白如何列表索引可能超出範圍..任何人都有線索?
'first_list,second_list = sequence,sequence'不會創建任何新列表。 'first_list','second_list'和'sequence'都指向這一行後的完全相同的列表對象。 – user2357112
有一個[快速指南](https://nedbatchelder.com/text/names.html)來說明Python變量和賦值如何工作。 – user2357112
可能的提示https://stackoverflow.com/questions/43017251/solve-almostincreasingsequence-codefights –