我有一個包含 2 個最小數字的串列,我試圖在索引 [5]?? 處獲取最小數字 33 的索引,但是一旦找到最小值,我的回圈就會停止在 [0]。不確定如何獲取最后一個索引值。
rain_data = [33, 57, 60, 55, 53, 33]
min_value = rain_data[0]
min_index = 0
def minimum(rain_data)
for val in range(len(rain_data)):
if rain_data[val] < min_value:
min_value = rain_data[val]
min_index = val
# display the min value and index
print(min_value)
print(min_index)
results = (float(min_value) , min_index)
我已經運行了回圈,它在 [0] 而不是所需的 [5] 索引處停止
uj5u.com熱心網友回復:
嘗試使用 <= min_value,那么你的答案將是 5。或者將你的 min_index 設為陣列型別,這樣你就可以將所有索引存盤在陣列中,這樣你將獲得找到最小值的所有索引的串列。
uj5u.com熱心網友回復:
rain_data = [33, 57, 60, 55, 53, 33]
minimum = min(rain_data)
out = [i for i,x in enumerate(rain_data) if x == minimum]
print(out[-1])
或者
rain_data = [33, 57, 60, 55, 53, 33]
min_index = (len(rain_data) - 1) - rain_data[::-1].index(min(rain_data))
print(min_index)
5
uj5u.com熱心網友回復:
正如評論中所指出的,這個問題可以用不同的方式解釋。
LAST 最小值的位置
rain_data = [33, 57, 60, 55, 53, 33]
min_value = rain_data[0]
last_min_pos = 0
for i, x in enumerate(rain_data):
if x <= min_value:
min_value = x
last_min_pos = i
輸出:5
NTH 最小值的位置(這里是第二個)
我會使用字典/串列來跟蹤每個專案的位置,并使用回圈來計算最小值。
此邏輯只需要讀取串列一次。
用字典:
rain_data = [33, 57, 60, 55, 53, 33]
d = {}
min_val = rain_data[0]
for i, x in enumerate(rain_data):
if x < min_val:
min_val = x
d.setdefault(x, []).append(i)
if len(d[min_val])>1:
print(d[min_val][1])
輸出:5
與串列相同的邏輯:
l = []
min_val = rain_data[0]
for i, x in enumerate(rain_data):
if x < min_val:
min_val = x
l = []
if x == min_val:
l.append(i)
if len(l)>1:
print(l[1])
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/534258.html
標籤:Python列表循环索引
上一篇:在do嵌套回圈中打開MP
