Partage
  • Partager sur Facebook
  • Partager sur Twitter

Erreur: IndexError: list index out of range

    9 août 2018 à 14:30:21

    Bonjour, 

    J'essaye d'écrire un code et je comprend pas pourquoi j'ai l'erreur :IndexError: list index out of range

    Voici le code: b=[]

    for i in range(1,5):

        print(b[i]) 

    Voici un autre code où j'ai la même erreur : 

    YY=[]

    a=[]

    b=[]

    #interpolate the difference for 90days

    for n in range(416,505):

        YY[n]=0

        for k in range(1,prices.settle_sp_price.size):

         a[k]=np.real(Y[k])

         b[k]=-np.imag(Y[k])

         omk=2*math.pi*(k-1)/prices.settle_sp_price.size 

         YY[n]=YY[n]+a[k]*math.cos(omk*(n-1))+b(k)*math.sin(omk*(n-1))

        YY[n]=-YY[n]/prices.settle_sp_price.size

    Merci d'avance! 

    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      9 août 2018 à 15:15:28

      Si tu pars d'une liste vide, il sera difficile d'en lire ses éléments, et c'est ce que tu es en train de lui demander.
      • Partager sur Facebook
      • Partager sur Twitter
        9 août 2018 à 15:48:59

        oldProgrammer a écrit:

        Si tu pars d'une liste vide, il sera difficile d'en lire ses éléments, et c'est ce que tu es en train de lui demander.

        Et si je le remplis de 0, est ce que ça va changer quelque chose ? J'ai l'impression que des que je mets des crochets ça ne fonctionne plus.

        -
        Edité par bibi95100 9 août 2018 à 15:49:38

        • Partager sur Facebook
        • Partager sur Twitter
          9 août 2018 à 16:02:38

          Si tu met que des 0, tes print[i] vont afficher 0 mais ça ne fera plus d'erreur en effet.

          Sinon si tu ne sais pas combien d'indice aura ta liste utilise plutôt 

          a.append(np.real(Y[k]))

          au lieu de 

          a[k]=np.real(Y[k]) 

          -
          Edité par Jojuss 9 août 2018 à 16:03:05

          • Partager sur Facebook
          • Partager sur Twitter
            9 août 2018 à 16:21:00

            Jojuss a écrit:

            Si tu met que des 0, tes print[i] vont afficher 0 mais ça ne fera plus d'erreur en effet.

            Sinon si tu ne sais pas combien d'indice aura ta liste utilise plutôt 

            a.append(np.real(Y[k]))

            au lieu de 

            a[k]=np.real(Y[k]) 

            -
            Edité par Jojuss il y a 15 minutes


            Merci pour votre réponse. J'avais fait ça au début mais j'avais toujours un soucis au niveau de la ligne :

                YY[n]=YY[n]+a[k]*math.cos(omk*(n-1))+b[k]*math.sin(omk*(n-1))

            Finalement, j'ai remplit les tableaux avec des zeros et je n'ai plus le soucis d'index, par contre j'ai un nouveau problème :

            KeyError: range(0, 238)

            • Partager sur Facebook
            • Partager sur Twitter
              9 août 2018 à 16:24:20

              C'est soit range(238) soit range(1,238) 1 ou plus d'ailleurs

              • Partager sur Facebook
              • Partager sur Twitter
                9 août 2018 à 16:34:04

                Jojuss a écrit:

                C'est soit range(238) soit range(1,238) 1 ou plus d'ailleurs


                Mais à aucun moment dans mon code je n'ai mis range(0,238)...
                • Partager sur Facebook
                • Partager sur Twitter
                  9 août 2018 à 16:52:57

                  En effet j'avoue j'ai juste lu l'erreur ahah, comme ça je voit pas trop, peux tu poster ton code à l'aide des balise </> dans l'éditeur de message parce que ça aide pas à bien voir. Poste le message d'erreur en entier aussi stp, surtout la ligne ou survient l'erreur.

                  Et ça n'a peut être rien à voir mais "b" est une liste et tu écris b(k) au lieu de b[k] à priori dans la ligne :

                  YY[n]=YY[n]+a[k]*math.cos(omk*(n-1))+b(k)*math.sin(omk*(n-1))

                  • Partager sur Facebook
                  • Partager sur Twitter
                    9 août 2018 à 16:56:20

                    Voila le code: 

                    YY=[0]*(prices.settle_sp_price.size+30)
                    
                    a=[0]*prices.settle_sp_price.size
                    
                    b=[0]*prices.settle_sp_price.size
                    
                    for n in range(prices.settle_sp_price.size,prices.settle_sp_price.size+25):
                    
                        YY[n]=0
                    
                        for k in range(1,prices.settle_sp_price.size):
                    
                         a[k]=np.real(Y[k])
                    
                         b[k]=-np.imag(Y[k])
                    
                         omk=2*math.pi*(k-1)/prices.settle_sp_price.size 
                    
                         YY[n]=YY[n]+a[k]*math.cos(omk*(n-1))+b[k]*math.sin(omk*(n-1))
                    
                        YY[n]=-YY[n]/prices.settle_sp_price.size
                    
                    # create one array for the original and interpolated difference
                    
                    # between the least squares curve and the stock price. for i=1:415
                    
                    # figure
                    
                    # plot(YY)
                    
                    i=range(prices.settle_sp_price.size)
                    
                    YY[i]=diff[i]
                    
                    #♦end
                    
                    #total price of stock from the least squares curve and cleaned fft
                    
                    #for 505 days
                    
                    tot= pp1+YY
                    
                    #plot the stock price (green) for 505 day vs the theoretical curve(red)
                    
                    plt.plot(x,options,'b');
                    
                    plt.show()
                    
                    plt.plot(x,tot,'r')
                    
                    plt.hold(False)
                    
                    plt.xlabel('time(days)')
                    
                    plt.ylabel(' price')
                    
                    plt.title('Stock price. Actual vs. theoretical 505 days')
                    
                    plt.savefig('plot4.pdf')



                    et voici l'erreur que j'ai mais il ne précise pas la ligne :

                      File "pandas/_libs/index.pyx", line 164, in pandas._libs.index.IndexEngine.get_loc

                    KeyError: range(0, 238)

                    -
                    Edité par bibi95100 9 août 2018 à 16:57:35

                    • Partager sur Facebook
                    • Partager sur Twitter

                    Erreur: IndexError: list index out of range

                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                    • Editeur
                    • Markdown