preferred in iterations and so on we can also make the new object mutable or not by selectively implementing methods called for in-place change operations ( __setitem__ is called on self[index]=value assignmentsalthough it' beyond this book' scopeit' also possible to implement new objects in an external language like as extension types for thesewe fill in function pointer slots to choose between numbersequenceand mapping operation sets object flexibility this part of the book introduced number of compound object types--collections with components in generallistsdictionariesand tuples can hold any kind of object sets can contain any type of immutable object listsdictionariesand tuples can be arbitrarily nested listsdictionariesand sets can dynamically grow and shrink because they support arbitrary structurespython' compound object types are good at representing complex information in programs for examplevalues in dictionaries may be listswhich may contain tupleswhich may contain dictionariesand so on the nesting can be as deep as needed to model the data to be processed let' look at an example of nesting the following interaction defines tree of nested compound sequence objectsshown in figure - to access its componentsyou may include as many index operations as required python evaluates the indexes from left to rightand fetches reference to more deeply nested object at each step figure - may be pathologically complicated data structurebut it illustrates the syntax used to access nested objects in generall ['abc'[( )([ ] )] [ [( )([ ] ) [ ][ ([ ] [ ][ ][ [ [ ][ ][ ][ references versus copies mentioned that assignments always store references to objectsnot copies of those objects in practicethis is usually what you want because assignments can generate multiple references to the same objectthoughit' important to be aware that core types review and summary