On Wed, Apr 30, 2014 at 10:21:41PM -0700, Scott W Dunning wrote: > So, I get a little confused about lists sometimes. This one is a > little hard to make heads or tails of. I get confused about how to > tell how many lists are within one list like the one below. How many > lists are located inside alist is it 1 or 2, 3?? Also, do spaces > count as an index in lists? > > >>> alist = [3, 67, "cat”, [56, 57, “dog”], [], 3.14, False] > >>> print alist[4:] > [[], 3.14, False]
Spaces do not count as indexes. Spaces are just inserted when printing the list to make it easier for people to read. It is commas, not spaces, which separate items in the list. So you have: alist = [3, 67, "cat", [56, 57, "dog"], [], 3.14, False] Count the items separated by commas: 3 comma <== that's one 67 comma <== that's two "cat" comma <== three Next is tricky: the square bracket [ starts a new list. Since we don't care how many items are inside that list, we just keep going until we reach a matching ] closing square bracket: [56, 57, "dog"] comma <== that's four [] comma <== five 3.14 comma <== six False <== seventh and last Notice that because the commas *separate* items, there is one more item than separators: 1,2,3,4,5,6,7 (six commas and seven items). Also notice that out of the seven items inside alist, only two of them are lists: 3 INTEGER 67 INTEGER "cat" STRING [56, 57, "dog"] LIST with three items [] LIST with zero items 3.14 FLOAT False BOOLEAN FLAG > The ouput for below is 2 when it seems like there should be 3 lists > located inside x. Is it [10,20] that is not consider inside of x? > Any tips on how to tell how to spot them more clearly? > > x = ['a', [2.0, 5, [10, 20]]] > print len(x) Again, look at the commas: 'a' (a string) comma <== first item The next item begins with a square bracket, so it is a list. We ignore everything inside it *except more square brackets* until we reach the matching square bracket: [2.0 comma (but we don't care) 5 comma (still don't care) [ (and now we start yet another list, inside a list inside a list!) 10 comma (don't care) 20 (don't care) ] (we have reached the end of the innermost list) ] (we have reached the end of the inner list and no more items after that. So the list called "x" has two items: - the string "a" - a list containing 2.0, 5, and another list So there are two items inside list "x", three items inside the list inside "x", and two items inside the list inside that. When in doubt, this may help make it more obvious: x = ['a', [2.0, 5, [10, 20]]] for item in x: print(item) That will show you each item in turn. -- Steven _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor