the parameter and the variable letters are aliases for the same object it is important to distinguish between operations that modify lists and operations that create new lists for examplethe append method modifies listbut the operator creates new listt [ append( print( [ print( none [ print( [ is false this difference is important when you write functions that are supposed to modify lists for examplethis function does not delete the head of listdef bad_delete_head( ) [ :wrongthe slice operator creates new list and the assignment makes refer to itbut none of that has any effect on the list that was passed as an argument an alternative is to write function that creates and returns new list for exampletail returns all but the first element of listdef tail( )return [ :this function leaves the original list unmodified here' how it is usedletters [' '' '' 'rest tail(lettersprint(rest[' '' 'exercise write function called chop that takes list and modifies itremoving the first and last elementsand returns none then write function called middle that takes list and returns new list that contains all but the first and last elements