collection data types there is no obligation to follow this coding stylesome programmers prefer to always use parentheses--which is the same as the tuple representational formwhereas others use them only if they are strictly necessary eyes ("brown""hazel""amber""green""blue""gray"colors (haireyescolors[ ][ :- ('green''blue'here we have nested two tuples inside another tuple nested collections to any level of depth can be created like this without formality the slice operator [can be applied to slicewith as many used as necessary for examplethings ( - ("pea"( "xyz")"queue")things[ ][ ][ ][ 'zlet' look at this piece by piecebeginning with things[ which gives us the third item in the tuple (since the first item has index )which is itself tuple("pea"( "xyz")"queue"the expression things[ ][ gives us the second item in the things[ tuplewhich is again tuple( "xyz"and things[ ][ ][ gives us the second item in this tuplewhich is the string "xyzfinallythings[ ][ ][ ][ gives us the third item (characterin the stringthat is"ztuples are able to hold any items of any data typeincluding collection types such as tuples and listssince what they really hold are object references using complex nested data structures like this can easily become confusing one solution is to give names to particular index positions for examplemanufacturermodelseating ( minimummaximum ( aircraft ("airbus"" - "( )aircraft[seating][maximum this is certainly more meaningful than writing aircraft[ ][ ]but it involves creating lots of variables and is rather ugly we will see an alternative in the next subsection in the first two lines of the "aircraftcode snippetwe assigned to tuples in both statements when we have sequence on the right-hand side of an assignment (here we have tuples)and we have tuple on the left-hand sidewe say that the right-hand side has been unpacked sequence unpacking can be used to swap valuesfor exampleab (ba