user9366862
user9366862

Reputation:

Initialize the first index of a list in Python

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?

Upvotes: 0

Views: 2672

Answers (3)

Aurora Wang
Aurora Wang

Reputation: 1940

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)

Upvotes: 1

ahota
ahota

Reputation: 449

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

Upvotes: 1

iElden
iElden

Reputation: 1280

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)

Upvotes: 0

Related Questions