Инициализировать первый индекс списка в Python - PullRequest
0 голосов
/ 20 ноября 2018

Я конвертирую то, что я написал на C ++, в Python. Вот фрагмент того, что я пытаюсь переписать в 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;
}

Проблема, с которой я столкнулся, заключается в том, что я не могу установить первый индекс моего списка в python на что-то другое. Я пытаюсь это:

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)

Но я получаю эту ошибку:

IndexError: list assignment index out of range

Кто-нибудь знает, как это исправить?

Ответы [ 3 ]

0 голосов
/ 20 ноября 2018

Поскольку вы инициализировали date с [], он пуст с размером 0. Вам нужно будет использовать append(), чтобы добавить к нему элементы.

0 голосов
/ 20 ноября 2018

У вас возникла эта проблема, потому что вы пытаетесь получить доступ к индексу, который еще не был выделен.

Чтобы добавить объекты в список, вы должны использовать append ( отредактировано, чтобы исправить цикл):

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)
0 голосов
/ 20 ноября 2018

Вы можете объявить свой dates так:

dates = [NDD_month[0]]

for i in range(len(first_payments)):
    dates[i] = (dates[i-1] + 12 - first_payments[i-1]) % 12
print(dates)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...