Problème de Liste

marc_
Problème de Liste

salut,

je commence le python depuis quelques jours, et je bloque sur un problème d'index dans une liste:
j'ai une boucle while qui va s'exécuter environ 30 fois, et dans cette boucle une des instructions est du type:

string[j] = str[k]

string est déclarée avant le while avec:
string = list()

str est également une liste déclarée avant le while.

J'ai bien vérifié l'algo, ça s'incrément bien partout comme il faut, j'ai fait plusieurs essais de print pour voir où ça bloque et:
str[k] fonctionne
l'accès à string[j] bloque, ça fait une erreur IndexError: list assignment index out of range

Ma déclaration préalable est supposée créer une liste de taille variable, donc je ne vois pas du tout ce qui pose problème.

Si quelqu'un peut m'aider à trouver d'où ça vient merci à lui, j'aimerais bien continuer à avancer dans mon projet :p

fredericmazue

Quote:
string = list()

string est une liste vide, contenant aucun élément donc.

Donc:

Quote:
l'accès à string[j] bloque, ça fait une erreur IndexError: list assignment index out of range

Quelle que soit la valeur de j ça ne peut marcher puisque tu cherches à affecter un élément qui n'existe pas. Je pense que ce que tu veux c'est faire un slicing. avant de te montrer comment faire, je me permets de t'indiquer que tes variables sont très mal nommées. string est un nom de module, str est un nom de fonction intégrée. Sans parler des problème de collisions de noms, avec des variables nommées comme ça, ton code est pour le moins obfusqué.
Donc à propos du slicing, essaie ceci:

v1 = "marc"
v2 = v1[2:3]
print v2

v2 = v1[2:4]
print v2

v2 = v1[:]
print v2
print v[0]
print v[1]

Je pense qu'à l'aide de ces exemples tu vas résoudre ton souci facilement

goomie

tu veux pas plutot remplir ta liste si c est le cas tu devrais faire comme ca
string.append(str[j])

fredericmazue

Quote:
tu veux pas plutot remplir ta liste

Non, si tu lis la question...