Ho fatto al momento la prima modifica e non viene più sollevata l' eccezione. Quindi dovrebbe andar bene. Ho però un altro dubbio: Quando eseguo for i in range(0, len(self.ArrChartData) - 1):
se len(self.ArrChartData) è 0 voglio che il ciclo for non venga eseguito. se len(self.ArrChartData) è 1 voglio che il ciclo for non venga eseguito una sola volta con k=0 se len(self.ArrChartData) è 3 voglio che il ciclo for non venga eseguito tre volte con k=0, 1, 2 Si comporta proprio così? Grazie Il giorno 04 giugno 2013 02:02, Federico Figus <figus.feder...@gmail.com>ha scritto: > Ciao, > > il problema deriva dal fatto che ret è una lista vuota, quindi quando > cerchi di accedere al suo element ret[k] viene giustamente sollevata > un'eccezione IndexError proprio perchè il k-esimo elemento non esiste > (essendo una lista vuota). > > Se ho capito bene, ret dovrà essere sempre una lista di > len(self.ArrChartConfig) - 1 dizionari, che al proprio interno avranno un > indice 'data' associato ad una lista di len(self.ArrChartData) - 1 liste > di due elementi, allora dovresti inserire all'inizio del primo ciclo: > > ret.append({'data': []}) > > per poi fare un > > ret[k]['data'].append([xval, yval]) > > al posto della riga che solleva l'eccezione. > > A mio parere questo metodo non sarebbe ottimale, sia dal punto di vista > prestazionale (sia in termini di memoria che temporali) sia da quello > stilistico, potresti utilizzare le list comprehension per ottenere un > ottimo risultato: > > > def chart(self): > return [{'data': [[coords[0], coords[1]] for coords in > self.ArrChartData[:-1]]} > for _ in xrange(0, len(self.ArrChartConfig) - 1)] > > nel caso l'iterable self.ArrCharData contenga solo tuple o liste da 2 > elementi potresti anche scrive in questo modo > > def chart(self): > return [{'data': [[x, y] for x, y in self.ArrChartData[:-1]]} > for _ in xrange(0, len(self.ArrChartConfig) - 1)] > > > Spero di averti dato una mano con la risoluzione del tuo problema, fammi > sapere se funziona (e nel caso di errori dove ho sbagliato) o se c'è > qualche passaggio non molto chiaro. > Spero che il sonno non mi abbia giocato qualche brutto scherzo ;) > > P.S. se la coppia di coordinate non dovrai modificarla in futuro, ti > consiglio di usare una tupla per contenerle quindi (val[0], val[1]) > > Saluti, > Federico Figus > > _______________________________________________ > Python mailing list > Python@lists.python.it > http://lists.python.it/mailman/listinfo/python > > -- Daniele San Giovanni
_______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python