["python","python-3.x","tuples","iterable-unpacking"]
How are tuples unpacked in for loops?

I stumbled across the following code: 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") I don't understand the i, a bit, and searching for information on for didn't yield any useful results. When I try and experiment with the code I get the error: ValueError: need more than 1 value to unpack Does anyone know what it does, or a more specific term associated with it that I can google to learn more?
You could google "tuple unpacking". This can be used in various places in Python. The simplest is in assignment: >>> x = (1,2) >>> a, b = x >>> a 1 >>> b 2 In a for-loop it works similarly. If each element of the iterable is a tuple, then you can specify two variables, and each element in the loop will be unpacked to the two. >>> 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 The enumerate function creates an iterable of tuples, so it can be used this way.