Lists and tuples can be thought of as generic “buckets” with which to hold an arbitrary number of arbitrary Python objects. The items are ordered and accessed via index offsets, similar to arrays, except that lists and tuples can store different types of objects.
The main differences between lists and tuples are: Lists are enclosed in brackets ( [ ] ), and their elements and size can be changed, while tuples are enclosed in parentheses ( ( ) ) and cannot be updated. Tuples can be thought of for now as “read-only” lists. Subsets can be taken with the slice operator (  and [ : ] ) in the same manner as strings.
>>> aList = [1,2,3,4] >>> aList [1, 2, 3, 4] >>> aList 1 >>> aList[2:] [3, 4] >>> aList[:3] [1, 2, 3] >>> aList=5 >>> aList [1, 5, 3, 4]
Slice access to a tuple is similar, except for being able to set a value (as in List = 5 above).
>>> aTuple = ('robots',77,93,'try') >>> aTuple ('robots', 77, 93, 'try') >>> aTuple 'robots' >>> aTuple[2:] (93, 'try') >>> aTuple[:3] ('robots', 77, 93) >>> aTuple = 5 Traceback (most recent call last): File "<pyshell#62>", line 1, in <module> aTuple = 5 TypeError: 'tuple' object does not support item assignment
We encountered an error in our last example because we attempted to update a tuple, which is not allowed.