如何解决错误';列表分配索引超出范围';用python
我尝试从名为如何解决错误';列表分配索引超出范围';用python,python,list,Python,List,我尝试从名为date\u range的数据列表中存储周数,该列表存储了以下数据 date_range[1] = DatetimeIndex(['2020-03-02', '2020-03-03', '2020-03-04', '2020-03-05', '2020-03-06', '2020-03-07', '2020-03-08', '2020-03-09', '2020-03-10', '2020-03-11', '2020-03-
date\u range
的数据列表中存储周数,该列表存储了以下数据
date_range[1] = DatetimeIndex(['2020-03-02', '2020-03-03', '2020-03-04', '2020-03-05',
'2020-03-06', '2020-03-07', '2020-03-08', '2020-03-09',
'2020-03-10', '2020-03-11', '2020-03-12', '2020-03-13',
'2020-03-14', '2020-03-15', '2020-03-16', '2020-03-17',
'2020-03-18', '2020-03-19', '2020-03-20', '2020-03-21',
'2020-03-22', '2020-03-23', '2020-03-24', '2020-03-25',
'2020-03-26', '2020-03-27', '2020-03-28', '2020-03-29',
'2020-03-30', '2020-03-31', '2020-04-01', '2020-04-02',
'2020-04-03', '2020-04-04', '2020-04-05'],
dtype='datetime64[ns]', freq='D')
通过使用以下代码
weeknumber= []
for i in range(28):
for j in range(35):
weeknumber[i][j] = pd.Timestamp(date_range[i][j]).weekofyear
但是,IDE显示错误“列表分配索引超出范围”。如何解决此问题?要设置二维列表,可以使用以下内容,并用值替换列和行。只需记住行和列的增量为1
weeknumber= [[0]*cols]*rows
当您的
列表
在python
中为空时,您不能为列表的未分配索引赋值。
因此,这里有两个选项:
append
类似于:list.append(value)
循环
,为的主前面的列表
赋值。如下图所示:
i=0
而(我<你想要的索引):
列表[i]=0
...
#这是你的主要代码
使用以下方法:
weeknumber = []
for i in range(28):
weeknumber.append([])
for j in range(35)):
weeknumber[i].append(pd.Timestamp(date_range[i][j]).weekofyear)
关于为什么你的另一种方法会得到令人惊讶的结果的解释,请参阅这是否回答了你的问题:我试图按照你的指示,使用这个代码weeknumber=[[0]*28]*35表示范围内的I(len(meterpoint)):表示范围内的j(len(date_range[I]):weeknumber[I][j=(pd.Timestamp(date_range[I][j])。然而,输出在每一行中都显示相同的结果,实际上它不应该这样显示。如何解决这个问题呢?这是所有28行的结果[11,11,11,11,11,11,12,12,12,12,12,13,13,13,13,14,14,14,14,14,15,15,15,15,15,15]
weeknumber = []
for i in range(28):
weeknumber.append([])
for j in range(35)):
weeknumber[i].append(pd.Timestamp(date_range[i][j]).weekofyear)