Si j'ai le code Python suivant
>>> x = []
>>> x = x + [1]
>>> x = x + [2]
>>> x = x + [3]
>>> x
[1, 2, 3]
Sera-t-il x
toujours garanti [1,2,3]
, ou d'autres ordonnances d'éléments provisoires sont-elles possibles?
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 sera-t-elle TOUJOURS la même quel que soit le nombre de fois ou où j'utilise fn_1 ()?Bref, oui, l'ordre est préservé. En long:
En général, les définitions suivantes s'appliquent toujours aux objets tels que les listes:
Une liste est une collection d'éléments qui peut contenir des éléments en double et a un ordre défini qui ne change généralement pas sauf si explicitement fait pour le faire. les piles et les files d'attente sont deux types de listes qui fournissent un comportement spécifique (souvent limité) pour ajouter et supprimer des éléments (les piles étant LIFO, les files d'attente étant FIFO). Les listes sont des représentations pratiques, enfin, des listes de choses. Une chaîne peut être considérée comme une liste de caractères, car l'ordre est important (
"abc" != "bca"
) et les doublons dans le contenu de la chaîne sont certainement autorisés ("aaa"
peuvent exister et!= "a"
).Un ensemble est une collection d'éléments qui ne peuvent pas contenir de doublons et a un ordre non défini qui peut ou non changer avec le temps. Les ensembles ne représentent pas tant des listes de choses qu'ils décrivent l' étendue d'une certaine sélection de choses. La structure interne de l'ensemble, comment ses éléments sont stockés les uns par rapport aux autres, n'est généralement pas destinée à transmettre des informations utiles. Dans certaines implémentations, les ensembles sont toujours triés en interne; dans d'autres, l'ordre n'est tout simplement pas défini (généralement en fonction d'une fonction de hachage).
Collection est un terme générique faisant référence à tout objet utilisé pour stocker un nombre (généralement variable) d'autres objets. Les listes et les ensembles sont un type de collection. Les tuples et les tableaux ne sont normalement pas considérés comme des collections. Certaines langues considèrent également les cartes (conteneurs qui décrivent les associations entre différents objets) comme un type de collection.
Ce schéma de dénomination est valable pour tous les langages de programmation que je connais, y compris Python, C ++, Java, C # et Lisp (dans lesquels les listes ne conservant pas leur ordre seraient particulièrement catastrophiques). Si quelqu'un en connaît un où ce n'est pas le cas, veuillez simplement le dire et je modifierai ma réponse. Notez que des implémentations spécifiques peuvent utiliser d'autres noms pour ces objets, comme vector en C ++ et flex dans ALGOL 68 (les deux listes; flex n'est techniquement qu'un tableau redimensionnable).
S'il y a une confusion dans votre cas en raison des détails de la façon dont le
+
signe fonctionne ici, sachez que l'ordre est important pour les listes et à moins qu'il n'y ait de très bonnes raisons de croire le contraire, vous pouvez presque toujours supposer que les opérations de liste préservent l'ordre . Dans ce cas, le+
signe se comporte comme il le fait pour les chaînes (qui sont vraiment juste des listes de caractères de toute façon): il prend le contenu d'une liste et le place derrière le contenu d'un autre.Si nous avons
ensuite
Est le même que
Qui évalue à
Un peu comme
Produit
la source
Vous confondez «ensembles» et «listes». Un ensemble ne garantit pas l'ordre, mais les listes le font.
Les ensembles sont déclarées en utilisant des accolades:
{}
. En revanche, les listes sont déclarées en utilisant des crochets:[]
.Ne garantit pas la commande, mais la liste:
la source
Je suppose qu'une chose qui peut vous préoccuper est de savoir si les entrées pourraient changer, de sorte que le 2 devienne un nombre différent, par exemple. Vous pouvez mettre votre esprit à l'aise ici, car en Python, les entiers sont immuables , ce qui signifie qu'ils ne peuvent pas changer après leur création.
Cependant, tout en Python n'est pas immuable. Par exemple, les listes sont modifiables --- elles peuvent changer après avoir été créées. Ainsi, par exemple, si vous aviez une liste de listes
Ici, j'ai changé la première entrée de
a
(je l'ai ajouté7
). On pourrait imaginer mélanger les choses et obtenir des choses inattendues ici si vous ne faites pas attention (et en effet, cela arrive à tout le monde quand ils commencent à programmer en Python d'une manière ou d'une autre; il suffit de rechercher sur ce site pour "modifier une liste pendant la boucle") "pour voir des dizaines d'exemples).Il convient également de le souligner
x = x + [a]
et cex.append(a)
n'est pas la même chose. Le second mutex
et le premier crée une nouvelle liste et l'affecte àx
. Pour voir la différence, essayez de réglery = x
avant d'ajouter quoi que ce soitx
et d'essayer chacun, et regardez la différence que les deux fonty
.la source
aList = [1,2,3]
i = 0
une liste
[2]
La morale est que lorsque la modification d'une liste dans une boucle pilotée par la liste, prend deux étapes:
la source
Oui, les listes et les tuples sont toujours classés alors que les dictionnaires ne le sont pas
la source