我正在撰寫一個 Python 程式來查找給定數字在給定數字串列中的第二次出現(索引)的位置。該函式將輸入一個數字串列作為第一個引數,一個數字變數作為第二個引數。此函式應回傳給定變數值第二次出現在串列中的索引。如果輸入串列中沒有第二次出現該數字或該數字不存在,則該函式應回傳 0。
def getIndex(listOfIntegers,NumericVariable):
inp=int(NumericVariable)
for i in listOfIntegers:
if i==inp:
b=(listOfIntegers.index(i))
c=b 1
if c<len(listOfIntegers):
y=listOfIntegers[c:]
for j in y:
if j == inp:
d=(y.index(j))
res=d c
return res
continue
else:
return 0
if __name__ =='__main__':
l1=[]
size=int(input())
for i in range(size):
l1.append(int(input()))
num=int(input())
output=getIndex(l1,num)
print(output)
這是我使用的代碼,雖然我得到了預期的結果,但它說一些測驗用例失敗了。請向我建議可能出了什么問題或如何改進此代碼。謝謝
uj5u.com熱心網友回復:
您可以使用enumerate(),它將當前元素的索引值分配給i。此外,如果第二次沒有找到請求的元素,則回圈的else子句回傳。for0
def getIndex(int_list, num):
count = 0
for i, n in enumerate(int_list):
if n == num:
count = 1
if count == 2:
return i
else:
return 0
print(getIndex([1, 2, 3, 4, 5, 4], 4))
輸出:
5
uj5u.com熱心網友回復:
我認為你的方法不對,你需要重新思考邏輯,你不需要做2個回圈,你可以用一個計數器來計算你找到的出現次數,直到它達到目標出現次數
以下是我將如何實作它:
def find_in_list(int_list, n_to_find, occurence=2):
i = 0
while i < len(int_list):
if (int_list[i] == n_to_find):
occurence -= 1
if (occurence == 0):
return i
i = 1
return 0
如果這回答了您的問題,請不要忘記為我的答案投票,并通過單擊左側的復選標記來驗證它。
uj5u.com熱心網友回復:
其他版本:
def getIndex(listOfIntegers, NumericVariable):
occurrence = 0
for index, number in enumerate(listOfIntegers):
if number == NumericVariable:
occurrence = 1
if occurrence == 2:
return index
return 0
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/420266.html
標籤:
上一篇:IsInRange函式
