mylist = ["a", "apple", "b", "ball", "c", "cat"]
mylist[6] = "value"
print(mylist)
Erreur :
IndexError: list assignment index out of range
Je me souviens avoir assigné des valeurs par index en javascript, cela ne fonctionne pas en python ?
mylist = ["a", "apple", "b", "ball", "c", "cat"]
mylist[6] = "value"
print(mylist)
Erreur :
IndexError: list assignment index out of range
Je me souviens avoir assigné des valeurs par index en javascript, cela ne fonctionne pas en python ?
Les listes de Python sont indexées à 0. Vous avez 6 éléments dans votre liste, vous pouvez donc les indexer avec n'importe quelle valeur comprise entre 0 et 0. 0
a 5
. Les tentatives de dépassement de ces limites ne fonctionneront pas avec le système normal de l'UE. list
mais il semble que vous vouliez utiliser l'indexation comme extension implicite de la liste.
Pour cela, il faut un conteneur clairsemé, et voici une implémentation rapide qui sous-classe la liste.
class SparseList(list):
def __setitem__(self, index, value):
"""Overrides list's __setitem__ to extend the list
if the accessed index is out of bounds."""
sparsity = index - len(self) + 1
self.extend([None] * sparsity)
list.__setitem__(self, index, value)
Utilisez ça comme ça :
In [8]: sl = SparseList()
In [9]: print(sl)
[]
In [10]: sl[3] = "hi"
In [11]: print(sl)
[None, None, None, 'hi']
Et votre exemple spécifique :
In [11]: mylist = SparseList(["a", "apple", "b", "ball", "c", "cat"])
In [12]: print mylist
['a', 'apple', 'b', 'ball', 'c', 'cat']
In [13]: mylist[6] = "value"
In [14]: print mylist
['a', 'apple', 'b', 'ball', 'c', 'cat', 'value']
Et si vous voulez quelque chose d'un peu moins artisanal, essayez blist
En python, l'assignation simple ne fonctionne pas si l'index n'existe pas. Les tableaux en Javascript sont "clairsemé" vous pouvez stocker une valeur à n'importe quel indice. Au lieu de cela, les listes python ont une taille définie, et l'affectation n'est autorisée que dans les index existants.
Si vous voulez ajouter à la fin, utilisez mylist.append(value)
,
Ce que vous demandez peut être fait avec SparseList comme décrit par birrye. Ou vous pouvez toujours utiliser append. Dans le dictionnaire python, vous pouvez avoir n'importe quelle affectation indexée, par exemple,
dic = {}
dic['1'] = 100
dic['2'] = 200
Donc ce que tu peux faire, c'est écrire comme ça,
list = {}
i = 1 #Your index
list[str(i)] = value #Your value
Cela pourrait augmenter un peu le temps d'exécution. Vous obtiendrez une exception IndexError si vous faites référence à un index non attribué.
Vous pouvez y parvenir en créant d'abord une liste de None
mais ce n'est probablement pas la meilleure façon de faire les choses.
mylist = [None] * 10
mylist[0:5] = ["a", "apple", "b", "ball", "c", "cat"]
mylist[6] = "value"
Vous pouvez également vous contenter d'ajouter des éléments à la fin de la liste.
mylist = ["a", "apple", "b", "ball", "c", "cat"]
# create 7th element
mylist += ["value"]
# create 10th element
mylist += [None] * 2 + ["value2"]
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.