這是我的代碼:
lst = [] 。
for i in range(0, 3)。
ele = int(input("Enter elements of the list: ")
lst.append(ele)
for x in lst:
if ((x > lst[0] or x > lst[1] or x > lst[2] ) and (x < lst [0] or x < lst[1] or x < lst[2] )。)
print(x)
它作業得很好,列印出位于其他兩個元素之間的元素(比小者大,比大者小),但我需要該元素的索引。我試過
lst = [] []
for i in range(0, 3)。
ele = int(input("Enter elements of the list: ")
lst.append(ele)
for x in lst:
if ((x > lst[0] or x > lst[1] or x > lst[2] ) and (x < lst [0] or x < lst[1] or x < lst[2] )。)
print lst.index(x)
但是我得到的錯誤是沒有int值的索引。
如果有人知道我怎樣才能解決這個問題,我將不勝感激。另外,如果有一個更優雅的解決方案,請自由發布。
uj5u.com熱心網友回復:
一個簡單而簡潔的解決方案是將enumerate和sorted結合起來,使用enumerate輸出的第二個元素來排序:
lst = [0,2, 1]
sorted(enumerate(lst), key=lambda x。x[1])[1] [0]
# ↑被搜索的位置。
輸出。1
優點是,即使有重復的值,這也是有效的。例如[0,0,0] -> 1
從這一點來看,很容易將其推廣到任何長度。例如,取5個值中的中間元素:
lst = [0, 2,4,1,3]
sorted(enumerate(lst), key=lambda x。x[1])[3] [0]
輸出。4
@不要說話只是代碼指向替代的lst.index(sorted(lst)[1])(其中1是想要的位置,這里是3個串列的中間元素)
uj5u.com熱心網友回復:
使用min和max函式。
你的代碼被設定為對每個元素進行復雜的比較,而有一個更直接的方法可以做到這一點,即使用Python內置的min()和max()函式。
另外,你應該使用 try 和 except 來處理用戶的輸入。
lst = []
for i in range(0, 3)。
lst.append("placeholder")
while isinstance(lst[i], int) is False:
try:
ele = int(input("enter elements of the list: "))
except:
print("Type an integer")
else:
lst[i] = ele
Minimum = min(lst)
最大 = max(lst)
for x in enumerate(lst)。
if minimum < x[1] < maximum:
print(x)
uj5u.com熱心網友回復:
如果我是你,我會試試:
lst = [] 。
for i in range(0, 3)。
ele = int(input("Enter elements of the list: ")
lst.append(ele)
for i, x in enumerate(lst)。 # changed to enumerate.
if ((x > lst[0] or x > lst[1] or x > lst[2] ) and (x < lst [0] or x < lst[1] or x < lst[2] )。)
print(i, x)
現在,代碼列印出元素的索引和它的值。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/325725.html
標籤:
