Ich habe eine Liste von Werten und ich gebe eine Nummer ein. Die Funktion muss die Indizes in der Liste zurückgeben, deren Wert sich zu der Zahl addiert. Das Problem besteht darin, dass die Liste doppelte Zahlen enthält und die zurückgegebenen Indizes nicht identisch sein sollten. Hier ist, was ich habe, aber die Lösung sieht nicht sauber aus. Gibt es einen besseren Weg?Erhalte die Indizes einer Liste, deren Wert sich zu der angegebenen Zahl addiert
finalList = []
def getIndices(number):
values = [10,20,20,50,100,200,200,500,1000,2000,2000,5000]
for i in range(len(values)):
if values[i] == number:
if i not in finalList:
finalList.append(i)
else:
finalList.append(i-1)
return values
elif values[i] < number:
continue
else:
number = number - values[i-1]
if i-1 not in finalList:
finalList.append(i-1)
else:
finalList.append(i-2)
if number <= 0:
break
return getIndices(number)
result = getIndices(450)
print(result)
Ausgabe
[6, 5, 3]
Wenn ich vor dem Anhängen der Liste überprüfen didnt dann würde ich [6, 6, 3]
bekommen, die nicht das, was ich will.
Werfen Sie die Liste zuerst in ein 'Set', um Duples zu entfernen? – Bahrom
@BAH würde das nicht die Indexnummer ändern? – Adib
@Adib, ah ja, du hast Recht. Dann ersetzen Sie vielleicht alle Duplikate mit einer "None" oder etwas zuerst. – Bahrom