web-dev-qa-db-fra.com

Comment puis-je créer plusieurs listes vides en python?

Comment puis-je faire beaucoup de listes vides sans taper manuellement 

list1=[] , list2=[], list3=[]

Existe-t-il une boucle for qui me fera "n" nombre de ces listes vides?

17
Sameer Patel

Une compréhension de la liste est plus facile ici:

>>> n = 5
>>> lists = [[] for _ in range(n)]
>>> lists
[[], [], [], [], []]

Méfiez-vous de ne pas tomber dans le piège qui est:

>>> lists = [[]] * 5
>>> lists
[[], [], [], [], []]
>>> lists[0].append(1)
>>> lists
[[1], [1], [1], [1], [1]]
63
Eric

Si vous voulez créer différentes listes sans "liste de listes", essayez ceci: 

list1, list2, list3, list4 = ([] for i in range(4))
20
alemangui

Lookup liste compréhensions

listOfLists = [[] for i in range(N)]

Maintenant, listOfLists contient N listes vides

Plus de liens sur les compréhensions de liste:

123

J'espère que cela t'aides

9
inspectorG4dget

Que dis-tu de ça.

def mklist(n):
    for _ in range(n):
        yield []

Usage:

list(mklist(10))
[[], [], [], [], [], [], [], [], [], []]

a, b, c = mklist(3) # a=[]; b=[]; c=[]
2
yutaka

Vous pouvez également ajouter une liste de liste de liste de liste ... comme celle-ci aussi. Cela ne retournera aucune erreur. Mais je n'ai aucune idée de ce à quoi ça sert. 

n = 5 
>>> lists = [[[]]] for _ in range(n)]
>>> lists
   [[[[]]], [[[]]], [[[]]], [[[]]], [[[]]]]
1
Tapasit Suesasiton

Je vois que beaucoup de réponses ici vous donnent beaucoup de listes sans noms (en tant qu’éléments d’une liste plus longue). Ce n'est peut-être pas toujours ce dont vous avez besoin ... Il est possible de créer plusieurs listes vides, chacune avec un nom/une valeur différente, à l'aide d'un tuple:

a,b,c = ([],[],[])

changer cette structure devrait vous donner ce que vous voulez.

0
Pauli

Désolé de mon retard de deux ans, mais je peux peut-être encore aider d'autres personnes.

Le code ci-dessous se "créera" dynamiquement. Pour chaque itération, la commande suivante sera émise:

liste numéro = []

nombre est la valeur de i dans la boucle.

x = 3 # amount of lists you want to create
for i in range(1, x+1):
    command = "" # this line is here to clear out the previous command
    command = "list" + str(i) + " = []"
    exec(command)

Le résultat de cet élément de code particulier est trois variables: liste1, liste2 et liste3 en cours de création et chacune étant affectée à une liste vide.

Vous pouvez généraliser ceci pour faire pratiquement tout ce que vous voulez ... Notez que vous ne pouvez pas le mettre dans une fonction pour autant que je sache, à cause du fonctionnement des variables et des variables globales.

name = "my_var" # This has to be a string, variables like my_var1, my_var2 will be created.
value = "[]" # This also has to be a string, even when you want to assign integers! When you want to assign a string "3", you'd do this: value = "'3'"
amount = 5 # This must be an integer. This many variables will be created (my_var1, my_var2 ... my_var5).

for i in range(1, amount+1):
    command_variable = ""
    command_variable = name + str(i) + " = " + value
    exec(command_variable)

J'espère que j'ai aidé!

0
Martijn Luyckx