Je convertis quelque chose que j'ai écrit en C ++ en Python. Voici un extrait de ce que j'essaie de réécrire en python:

std::vector<int> dates(numberOfPayments.size(), 0);
dates[0] = NDD[0] - '0';
for (int i = 1; i < dates.size(); ++i)
{
    dates[i] = (dates[i - 1] + 12 - numberOfPayments[i - 1]) % 12;
}

Le problème que j'ai, c'est que je ne peux pas définir le premier index de ma liste en python sur quelque chose. J'essaye ceci:

dates = []
dates[0] = NDD_month[0]
for i in range(len(first_payments)):
    dates[i] = (dates[i-1] + 12 - first_payments[i-1]) % 12
print(dates)

Mais je reçois cette erreur:

IndexError: list assignment index out of range

Quelqu'un sait comment réparer ceci?

0
user9366862 20 nov. 2018 à 02:49

3 réponses

Meilleure réponse

Vous rencontrez ce problème car vous essayez d'accéder à un index qui n'a pas encore été alloué.

Pour ajouter des éléments à une liste, vous devez utiliser append ( modifié pour corriger la boucle ):

dates = []
dates.append(NDD_month[0])
for i in range(1, len(first_payments)):
    dates.append((dates[i-1] + 12 - first_payments[i-1]) % 12)
print(dates)
1
Aurora Wang 20 nov. 2018 à 00:06

Vous pouvez déclarer votre dates comme ça:

dates = [NDD_month[0]]

for i in range(len(first_payments)):
    dates[i] = (dates[i-1] + 12 - first_payments[i-1]) % 12
print(dates)
0
iElden 19 nov. 2018 à 23:51

Puisque vous avez initialisé date avec [], il est vide avec une taille de 0. Vous devrez utiliser append() pour y ajouter des éléments.

1
ahota 19 nov. 2018 à 23:51