Değerlerim var ve ben bir sayı giriyorum. İşlev, değeri sayıya kadar olan listeden indisleri döndürmelidir. Sorun, listede çift numaralar ve geri dönen indeksler aynı olmamalıdır. İşte sahip olduğum şey ama çözüm temiz görünmüyor. Daha iyi bir yolu var mı?Belirtilen numaraya kadar değer ekleyen bir listenin indekslerini alın
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)
Çıktı
[6, 5, 3]
Sonra İstemediğim budur [6, 6, 3]
alacağı eklemeden önce listeyi kontrol etmedi edin.
Yinelenen öğeleri kaldırmak için listeyi bir "kümeye" yerleştirdiniz mi? – Bahrom
@BAH, dizin numarasını değiştirmez mi? – Adib
@Adib, ah evet, haklısınız. O zaman belki de tüm dupleri bir 'None' ya da bir şeyle değiştirin. – Bahrom