如何計算到達特定索引的最小步數向前和向后計數?
名單是:
content = [1, 2, 3, 4]
如果我從索引開始0并想知道要多少步才能達到4向前迭代的數字,我會得到3,因為:
#0 #1 #2 #3
[1, 2, 3, 4, 5]
但我也想知道它倒退,比如:
#0 #2 #1
[1, 2, 3, 4, 5]
在上面的示例中,最小步數是2
另一個例子
content = ["A", "B", "C", "D", "E"]
start_index = 4 # "E"
to_find = "D"
#1 #2 #3 #4 #0
["A", "B", "C", "D", "E"]
# Moving forward I'll start from "A" again until reache "D"
#1 #0
["A", "B", "C", "D", "E"] # Moving backwards...
在上面的示例中,最小步數是1
uj5u.com熱心網友回復:
你可以這樣做:
len(content) - content.index(4)
因為content.index(4)找到“前向”索引,然后“后向”索引等于從元素4到串列末尾的元素數,等于所有元素減去第一個content.index(4)。
如評論中所述,這會找到串列中第一次出現的索引。為了找到最后一個(即從最后開始),您可以這樣做:
content[::-1].index(4) 1
例子:
>>> content = ['a', 'b', 'c', 'b']
>>> len(content) - content.index('b')
3
>>> content[::-1].index('b') 1
1
uj5u.com熱心網友回復:
只需減少您的索引而不是增加它。Python 串列支持負索引
content = [1, 2, 3, 4, 5]
end_element = 4
i = 0
count = 0
while content[i] != end_element:
i -= 1
count = 1
print(count) # 2
當然,這留下了IndexError: list index out of range當end_element不在您的串列中時的可能性,但是您可以很容易地處理該錯誤。
uj5u.com熱心網友回復:
也許這個?
def m(l: list, n: int):
return min(l.index(n), len(l) - l.index(n))
你的陣列可以有重復的專案嗎?如果是這樣,你想要什么行為。例如,[1,2,3,4,3] 的期望是什么?
在您的示例中,索引從左側的 0 和右側的 1 開始,這有點奇怪。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/478415.html
上一篇:演算法問題:均勻噪聲二值影像分類
下一篇:在資料結構中查找書籍的搜索功能
