0

I am converting something I wrote in C++ to Python. Here is a snippet of what I am trying to rewrite in 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;
}

The problem I am having is that I cannot set the first index of my list in python to something. I try this:

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)

But I get this error:

IndexError: list assignment index out of range

Anyone know how to fix this?

1
  • List that you initialized is empty. Try dates.append(). Also in the next line you would probably like to loop from 1 instead of 0. Commented Nov 19, 2018 at 23:57

3 Answers 3

1

You're having this problem because you're trying to access a index that was not allocated yet.

To append things to a list you should use append (edited to fix loop):

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)
Sign up to request clarification or add additional context in comments.

2 Comments

I want to highlight the fact that I only fixed the append part. Your loop is starting in 0 and your logic will access a index -1. It will not break an error because Python allow access to negative indexes (it accesses your list backwards), but I don't think this is what you intended to do, is it?
1

Since you initialized date with [], it is empty with a size of 0. You will need to use append() to add elements to it.

Comments

0

You can declare your dates like that:

dates = [NDD_month[0]]

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

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.