Est une liste Python la garantie d'avoir ses éléments rester dans l'ordre où ils sont insérés dans?
Si j'ai le code Python suivant
>>> x = []
>>> x = x + [1]
>>> x = x + [2]
>>> x = x + [3]
>>> x
[1, 2, 3]
Sera x
être garanti pour toujours être [1,2,3]
, ou d'autres ordres de l'intérim éléments possible?
Vous devez vous connecter pour publier un commentaire.
Oui, l'ordre des éléments dans une liste python est persistant.
def fn_1(): lst = [] lst.append(1) lst.append(2) return lst
etdef fn_2(): print(fn_1())
la commande-être même TOUJOURS, indépendamment de combien de temps ou à l'endroit où je utiliser fn_1() ?En bref, oui, l'ordre est conservé. En long:
En général, les définitions suivantes s'appliquent toujours à des objets comme des listes:
Un liste est une collection d'éléments que peut contenir les éléments en double et a défini un ordre qui, généralement, ne pas changer, sauf si explicitement de le faire. piles et files d'attente sont les deux types de listes qui fournissent spécifiques (souvent limitée) comportement pour l'ajout et la suppression d'éléments (les piles étant LIFO, les files d'attente étant FIFO). Les listes sont pratiques, représentations de, bien, des listes de choses. Une chaîne peut être considéré comme une liste de caractères, que l'ordre est important (
"abc" != "bca"
) et les doublons dans le contenu de la chaîne sont certainement permis ("aaa"
peut exister et!= "a"
).Un ensemble est une collection d'éléments qui ne peuvent pas contenir de doublons et a un ordre déterminé qui peut ou ne peut pas changer au fil du temps. Jeux ne représentent pas des listes de choses à ce point, puisqu'ils décrivent la mesure d'une certaine sélection de choses. La structure interne de la définir, de la façon dont ses éléments sont stockés les uns par rapport aux autres, n'est généralement pas destiné à transmettre des informations utiles. Dans certaines implémentations, ensembles sont toujours en interne triés; dans d'autres, la commande est tout simplement pas défini (généralement en fonction d'une fonction de hachage).
Collection est un terme générique se référant à un objet utilisé pour stocker un (généralement variable) nombre d'autres objets. Les deux listes et les jeux sont un type de collection. Les Tuples et les Tableaux sont normalement pas considérés comme des collections. Certaines langues envisager cartes (conteneurs qui décrivent les associations entre différents objets) à un type de collection.
Ce schéma de nommage est valable pour tous les langages de programmation que je connais, y compris Python, C++, Java, C#, et Lisp (dans lequel la liste de ne pas garder leur ordre serait particulièrement catastrophique). Si quelqu'un sait d'où cela n'est pas le cas, s'il vous plaît dites-le et je vais modifier ma réponse. Notez que les implémentations spécifiques peuvent utiliser d'autres noms pour ces objets, tels que vecteur en C++ et flex en ALGOL 68 (les deux listes; flex est techniquement juste un re-extensible tableau).
Si il n'y a aucune confusion à gauche, dans votre cas, en raison des spécificités de la façon dont le
+
signe œuvres ici, il suffit de savoir que l'ordre est important pour les listes et moins il y a de très bonnes raisons de croire le contraire, vous pouvez très bien toujours raisonnable de supposer que la liste des opérations de préserver l'ordre. Dans ce cas, le+
signe se comporte comme il le fait pour les chaînes de caractères (qui sont vraiment des listes de caractères de toute façon): il reprend le contenu de la liste et le place derrière le contenu de l'autre.Si nous avons
Puis
Est le même que
Qui évalue à
Comme
Produit
Vous confondez "fixe" et "listes". Un jeu ne garantit pas l'ordre, mais les listes ne.
Ensembles sont déclarées à l'aide d'accolades:
{}
. En revanche, les listes sont déclarées à l'aide de crochets:[]
.Ne garantit pas l'ordre, mais la liste n':
Je suppose que l'une chose que peut-être vous concernant est de savoir si ou non les entrées à changer, ainsi que le 2 devient un autre numéro, par exemple. Vous pouvez mettre votre esprit à l'aise ici, parce qu'en Python, les entiers sont immuable, ce qui signifie qu'ils ne peuvent pas changer une fois qu'ils sont créés.
Pas tout en Python est immuable, bien que. Par exemple, les listes sont mutables---ils peuvent changer après sa création. Ainsi, par exemple, si vous aviez une liste de listes
Ici, j'ai changé la première entrée de
a
(j'ai ajouté7
à elle). On pourrait imaginer de brassage des choses autour, et d'obtenir des choses inattendues ici si vous n'êtes pas prudent (et en effet, cela arrive à tout le monde quand ils commencer la programmation en Python, d'une certaine façon ou d'une autre; il suffit de chercher sur ce site pour "modification d'une liste tout en parcourant" pour voir des dizaines d'exemples).Il est également intéressant de souligner que
x = x + [a]
etx.append(a)
ne sont pas la même chose. La seconde mutationx
, et la première crée une nouvelle liste et l'attribue àx
. Pour voir la différence, essayez de définiry = x
avant d'ajouter quelque chose àx
et en essayant de chacun, et de regarder la différence de le rendre ày
.accédez à la liste=[1,2,3]
i=0
accédez à la liste
[2]
Le moral est lors de la modification d'une liste dans une boucle tirée par la liste, s'effectue en deux étapes:
Oui les listes et les tuples sont toujours ordonnées, tandis que les dictionnaires ne sont pas