Je suis tombé sur le code suivant:
for i,a in enumerate(attributes):
labels.append(Label(root, text = a, justify = LEFT).grid(sticky = W))
e = Entry(root)
e.grid(column=1, row=i)
entries.append(e)
entries[i].insert(INSERT,"text to insert")
Je ne comprends pas le mot 'un peu' et chercher sur Google des informations sur le mot 'for' est un problème, et lorsque j'essaie d'expérimenter avec le code, j'obtiens l'erreur
ValueError: besoin de plus d'une valeur pour décompresser
Est-ce que quelqu'un sait ce qu'il fait ou quelque chose à voir avec cela que je peux google pour en savoir plus?
Vous pouvez google sur "Tuple Déconditionnement". Cela peut être utilisé à différents endroits en Python. Le plus simple est en cours
>>> x = (1,2)
>>> a, b = x
>>> a
1
>>> b
2
Dans une boucle for, cela fonctionne de manière similaire. Si chaque élément de l'itérable est un tuple, vous pouvez alors spécifier deux variables et chaque élément de la boucle sera décompressé en deux.
>>> x = [(1,2), (3,4), (5,6)]
>>> for item in x:
... print "A Tuple", item
A Tuple (1, 2)
A Tuple (3, 4)
A Tuple (5, 6)
>>> for a, b in x:
... print "First", a, "then", b
First 1 then 2
First 3 then 4
First 5 then 6
La fonction enumerate crée un itérable de n-uplets, elle peut donc être utilisée de cette façon.
Enumerate vous donne essentiellement un index à utiliser dans la boucle for. Alors:
for i,a in enumerate([4, 5, 6, 7]):
print i, ": ", a
Souhaitez imprimer:
0: 4
1: 5
2: 6
3: 7
Prenons ce code comme exemple:
elements = ['a', 'b', 'c', 'd', 'e']
index = 0
for element in elements:
print element, index
index += 1
Vous parcourez la liste en boucle et stockez également une variable d'index. enumerate()
fait la même chose, mais de façon plus concise:
elements = ['a', 'b', 'c', 'd', 'e']
for index, element in enumerate(elements):
print element, index
La notation index, element
est requise car enumerate
renvoie un tuple ((1, 'a')
, (2, 'b')
, ...) qui est décompressé en deux variables différentes.
[i for i in enumerate(['a','b','c'])]
Résultat:
[(0, 'a'), (1, 'b'), (2, 'c')]
La fonction enumerate
renvoie un objet générateur qui, à chaque itération, donne un tuple contenant l'index de l'élément (i
), numéroté à partir de 0
par défaut, associé à l'élément lui-même (a
), et la boucle for
qui vous permet de: accédez aux deux champs de ces n-uplets générés et affectez-leur des noms de variables.
Une réponse courte, décompresser les nuplets d'une liste dans une boucle for fonctionne . Enumerate () crée un nuplet en utilisant l'index courant et l'intégralité de l'élément courant, tel que (0, ('bob', 3))
J'ai créé un code de test pour illustrer ceci:
list = [('bob', 3), ('alice', 0), ('john', 5), ('chris', 4), ('alex', 2)]
print("Displaying Enumerated List")
for name, num in enumerate(list):
print("{0}: {1}".format(name, num))
print("Display Normal Iteration though List")
for name, num in list:
print("{0}: {1}".format(name, num))
La simplicité de décompression de Tuple est probablement l'une de mes choses préférées à propos de Python: D