Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何解决错误';列表分配索引超出范围';用python_Python_List - Fatal编程技术网

如何解决错误';列表分配索引超出范围';用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)