Every list has a method for appending
>>> a=[1,2,[3,4]]
>>> a.append(100)
>>> a
[1, 2, [3, 4], 100]
>>> a[2].append(200)
>>> a
[1, 2, [3, 4, 200], 100]
--------------------------------means new topic
Variables hold addresses and 
>>>a #same as
>>>print a  #fetches occupant of the address in a
--------------------------------means new topic
>>> c=3
>>> c[2]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'int' object is unsubscriptable
NB: even though Python looks like it isn't "typed", it is.
An integer doesn't have a 2nd component. Python calls the
"2" a "subscript", 
as in a mathematical sequence c[2] means c_2, with the 
understanding that sequences begin with subscript 0.
--------------------------------means new topic
Other operations always available are
>>> a
[1, 2, [3, 4, 200], 100]
>>> a[1:3]     #the "slice" of a from position 1 inclusive to 3 exclusive
[2, [3, 4, 200]]
>>> a[2][:1]   #the slice of [3,4,200] that ends with pos 1 exclusive
[3]
>>> a[2][1:]   #the slice of [3,4,200] that begins with pos 1 exclusive?? 
[4, 200]
>>> len[a]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'builtin_function_or_method' object is unsubscriptable
--------------------------------means that
I used brackets when, being a function, it wants parentheses
--------------------------------continuing
>>> len(a)   
4
>>> min(a)  
1
>>> max(a)  
[3, 4, 200]   # in mathspeak max{1,2,[3,4,200],100} is meaningless
>>> max(a[2]) 
200           # makes sense because a[2] is [3,4,200]
--------------------------------means that
Being obliging, Python doesn't give up giving an answer easily.
--------------------------------continuing
You can also assign to an entire slice
>>> c=[0,1,2,3,4,5]  # Here c_i = i, i=0,1,2,3,4,5 
>>> c[1:3] 
[1, 2]      #including c_1 up to excluding c_3
>>> c[1:3]="a"  #will be replaced by the letter "a"
>>> c
[0, 'a', 3, 4, 5]
--------------------------------------------
Some OOPishness: Python *is* object oriented whether you like it or not.
So "everything" is some kind of an object, i.e. is an instance of some
class. So when you write 
>>> a=[0,"a",[30,40,50],100] 
then a has some unalienable skills called "methods" in OOP, such as 
---------------------------------Python conversation:
>>> word = "word"    # a variable named "word" is the string "word"
>>> w                # hasn't been defined to be anything
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'w' is not defined   
>>> word             # see 
'word'
>>> list(word)       # function list() makes a string into a list of letters 
['w', 'o', 'r', 'd']
>>> w = list(word)   # which you can work with
>>> w[3]             # the 4th letter is a "d", counting 0,1,2,3 
'd'
>>> word[3]          # apparently strings are lists of letters already
'd'
---------------------------------
Here are all the methods than an object like w can suffer
w.append()
w.extend()
w.count()
w.index()
w.insert(,)
w.pop()
w.remove()
w.reverse()
w.sort()
--------------------------------ask Python what these do
>>> w
['w', 'o', 'r', 'd']
>>> w.append(10)
>>> w
['w', 'o', 'r', 'd', 10]     #OK, makes sense, "10" was tacked on
>>> a
[0, 'a', [30, 40, 50], 100]  #just another string left over
>>> w.extend(a)         
>>> w
['w', 'o', 'r', 'd', 10, 0, 'a', [30, 40, 50], 100] 
------------------------------- explanation
If we had appended a it would become the 6th component of w,
but we wanted to catenate the strings, hence extend not append.
------------------------------- explanation
>>> w.count(0)  # how many times "0" appears in the string
1
>>> w.index(3)  # at which index does "3" first appear?
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: list.index(x): x not in list  #none, "30" is thirty, not three
>>> w.index(30)  # sorry, you should have asked w[7].index(30), I think.
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: list.index(x): x not in list
>>> w.index("a")  #OK
6
>>> w.insert(3,["m","o   #ooops, typo, .... too late
  File "<stdin>", line 1
    w.insert(3,["m","o
                     ^
SyntaxError: EOL while scanning single-quoted string
>>> w.insert(3,["m",0,"r"])
>>> w
['w', 'o', 'r', ['m', 0, 'r'], 'd', 10, 0, 'a', [30, 40, 50], 100]
>>> w.pop[3]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'builtin_function_or_method' object is unsubscriptable
>>> w.pop([3])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: an integer is required
>>> 
----------------------------------------explanation
Right about here the conversation becomes tedious, and it's time
to quit. 


