在Python中初始化列表的第一个索引 我把我用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中初始化列表的第一个索引 我把我用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,list,Python,List,但我得到了这个错误: IndexError: list assignment index out of range 有人知道如何解决这个问题吗?你可以这样声明你的日期: dates = [NDD_month[0]] for i in range(len(first_payments)): dates[i] = (dates[i-1] + 12 - first_payments[i-1]) % 12 print(dates) 您可以这样声明您的日期: dates = [NDD_mon

但我得到了这个错误:

IndexError: list assignment index out of range

有人知道如何解决这个问题吗?

你可以这样声明你的
日期:

dates = [NDD_month[0]]

for i in range(len(first_payments)):
    dates[i] = (dates[i-1] + 12 - first_payments[i-1]) % 12
print(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)

由于您使用
[]
初始化了
日期
,因此该日期为空,大小为0。您需要使用
append()
向其中添加元素

由于您使用
[]
初始化了
日期
,因此该日期为空,大小为0。您需要使用
append()
向其中添加元素

您遇到此问题是因为您试图访问尚未分配的索引

要将内容追加到列表中,您应该使用
追加
编辑以修复循环):


出现此问题是因为您试图访问尚未分配的索引

要将内容追加到列表中,您应该使用
追加
编辑以修复循环):


您初始化的列表为空。试试dates.append()。在下一行中,您可能希望从1而不是0循环。您初始化的列表为空。试试dates.append()。另外,在下一行中,您可能希望从1而不是0循环。我想强调一个事实,即我只修复了
append
部分。循环从0开始,逻辑将访问索引
-1
。它不会破坏错误,因为Python允许访问负索引(它会向后访问列表),但我认为这不是您想要做的,是吗?请参阅本文我想强调一个事实,即我只修复了
append
部分。循环从0开始,逻辑将访问索引
-1
。它不会破坏错误,因为Python允许访问负索引(它会向后访问列表),但我认为这不是您想要做的,是吗?请参阅本文
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)