Listes en python : IndexError: list index out of range Hmmm

Listes en python : IndexError: list index out of range Hmmm - Python - Programmation

Marsh Posté le 28-05-2007 à 11:51:27    

Bonjour à toutes et à tous,
 
En ce beau lundi de pentecôte, je compatis avec ceux qui bossent...
J'ai un problème de noob avec les listes pytho,
 
J'ai créé un objet ActionObjectUI qui comporte un attribu :  
self.InputPortObjectUI = []
 
J'ai créé deux accésseurs :
 

Code :
  1. def setOutputPort(self, _position, _port):
  2.         """ Set the setOutputPort port of the current ActionObjectUI """
  3.        
  4.         if self.getNbInputPorts() > _position:
  5.             newOutputPort = OutputPortObjectUI(QtCore.QPoint(8,8), QtCore.QPoint(self.getPosition().x() + self.getSize().x() -1 , self.getPosition().y() + 20 * ( _position + 1)), self.AttParent)
  6.             newOutputPort.setPort(_port)
  7. C'est lequel le mieux :
  8.             #self.OutputPortObjectUI[_position] = _port
  9.             self.OutputPortObjectUI.insert(_position, _port)
  10.         else:
  11.             return -1


 

Code :
  1. def getOutputPort(self, _pos):
  2.         """ return the output port wich is stored at the position _pos """
  3.         return self.OutputPortObjectUI[_pos];


 
et voici l'érreur :
 

Code :
  1. File "D:\WorkSpace\AFPython\Editor\ActionObjectUI.py", line 122, in getOutputPort
  2.     return self.OutputPortObjectUI[_pos];
  3. IndexError: list index out of range


 
Donc là je ne vois pas. Faut-il initialiser les listes en pythON????

Reply

Marsh Posté le 28-05-2007 à 11:51:27   

Reply

Marsh Posté le 28-05-2007 à 11:54:09    

jijiz a écrit :


Donc là je ne vois pas. Faut-il initialiser les listes en pythON????


Les listes ne sont pas "sparse" par défaut en python (c'est à dire qu'il n'est pas possible d'insérer un item à l'index 30 dans une liste vide), c'est tout, si tu imprimais le contenu de ta liste après avoir utilisé .insert (qui entre nous soit dit ne sert absolument à rien), tu verrais que tu as une liste d'un seul élément et que cet élément est à l'index 0.
 
Utilise un dict.


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 28-05-2007 à 11:58:30    

masklinn a écrit :

Les listes ne sont pas "sparse" par défaut en python (c'est à dire qu'il n'est pas possible d'insérer un item à l'index 30 dans une liste vide), c'est tout, si tu imprimais le contenu de ta liste après avoir utilisé .insert (qui entre nous soit dit ne sert absolument à rien), tu verrais que tu as une liste d'un seul élément et que cet élément est à l'index 0.
 
Utilise un dict.


ok merci, je vais voir du coté des dic.  
Ce qui me choque c'est que dans mon programme de test je fais des insert aux indices 0 1 2 3 puis 4. Je ne fais pas n'importe nawak, or comme python est assez permissif en ce qui concerne le typage, fontionnement dynamique et d'autres trucs, je pensais que ça pouvait passer.
 
 
 
pour toi dic c'est dictionnaire? je ne vois pas l'utilité d'utiliser un dictionnaire car c'est un tableau d'objets que je veux creer.

Message cité 1 fois
Message édité par jijiz le 28-05-2007 à 12:01:36
Reply

Marsh Posté le 28-05-2007 à 12:09:48    

jijiz a écrit :

ok merci, je vais voir du coté des dic.  
Ce qui me choque c'est que dans mon programme de test je fais des insert aux indices 0 1 2 3 puis 4.


Je ne sais pas où tu fais tes inserts, mais je sais qu'il n'y a aucun objet à l'index auquel tu essaies de récupérer ton objet, puisque Python gueule [:spamafote]  

jijiz a écrit :

je ne vois pas l'utilité d'utiliser un dictionnaire car c'est un tableau d'objets que je veux creer.


Ah bon, ben si tu n'as pas besoin de conseils je vais te laisser t'amuser tout seul hein.


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 28-05-2007 à 12:15:04    

masklinn a écrit :

Je ne sais pas où tu fais tes inserts, mais je sais qu'il n'y a aucun objet à l'index auquel tu essaies de récupérer ton objet, puisque Python gueule [:spamafote]  
 
Ah bon, ben si tu n'as pas besoin de conseils je vais te laisser t'amuser tout seul hein.


Ah ben sois pas susceptible mon choux, je suis un noob, je me pose des questions c'est tout.
 

Reply

Marsh Posté le 29-05-2007 à 10:21:06    

masklinn a écrit :

Les listes ne sont pas "sparse" par défaut en python (c'est à dire qu'il n'est pas possible d'insérer un item à l'index 30 dans une liste vide), c'est tout, si tu imprimais le contenu de ta liste après avoir utilisé .insert (qui entre nous soit dit ne sert absolument à rien), tu verrais que tu as une liste d'un seul élément et que cet élément est à l'index 0.
 
Utilise un dict.


 
Je poste aujourd'hui pour te remercier de ton aide, tu as raisons, les dictionnaires sont beaucoup + adaptés pour ce que je veux faire.
 
Bonne journée,
 
Ju.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed