Lists


A list is an ordered collection of objects, or entries. We can add and remove entries from a list, and change a particular entry.


Example:
>>> favs = ['Charlie', 3, 'lemon meringue pie', math.pi]
>>> print favs
['Charlie', 3, 'lemon meringue pie', 3.14159265897931]



Many programming languages have a data structure called an array. An array is an ordered collection of objects which are all of the same type (all integers, all strings, etc.), and the size of an array is chosen when the array is created and the size cannot be changed.


In Python, we have lists instead of arrays. Lists are different from arrays in some ways:







Creating and Modifying Lists


1. Create a list by enumerating the objects in the list

>>> numbers = [2, 3, 5]



2. Append to a list - add an item to the end of the list

>>> myList = []  # create an empty list
>>> myList.append(7)   # myList = [7]
>>> myList.append(11)  # myList = [7, 11]



3. Insert an item at a specified position

>>>  myList = [9, 2, 1]
>>> myList.insert(1, 3)  # myList = [9, 3, 2, 1]



4. Concatenate existing lists

>>> a = [1, 2]
>>> b = [3, 4]
>>> c = a + b      # c = [1, 2, 3, 4]



5. Specify an initial value or values in the list and repeat with *

>>> a = [0, 1]*5
>>> a
[0, 1, 0, 1, 0, 1, 0, 1, 0, 1]



6. Create a 2-dimensional list

>>> l2 = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

The first row contains 1, 2 and 3, the second row contains 4, 5 and 6, and the third row contains 7, 8 and 9.







Basic List Operations - length, indexing, slicing and traversing


Note: We perform these operations on lists in the same way as we do on strings. However, a list is mutable (its entries can be changed), while a string is immutable.


Length of a list: the len() function

>>> myList = ['a', 'b', 'c']
>>> print len(myList)
3



Indexing: The valid indices for a list L are 0 to len(L)-1. We can also use negative indices.

>>> a = [4, 2, 7 ]
>>> print a[0]
4
>>> print a[-1]
7
>>> print a[-2]
2
>>> a[1] = 10   # change the element at index 1 to 10
>>> print a
[4, 10, 7]


Access an entry in a 2-dimensional array by specifying first the row, and then the column, of the entry:

l2 = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
x = l2[0][0]    # x is 1
y = l2[1][2]    # y is 6



Slicing: get a sub-list

Notation: myList[start:end]
The resulting sub-list contains the values of myList from index start up to, but not including, end.

As with strings, the start or end index can be omitted.

>>> a = [4, 10, 7, 3]
>>> b = a[1:3]         # b = [10, 7]
>>> c = a[1:]           # c = [10, 7, 3]
>>> d = a[:-2]         # d = [4, 10]



Traversing a list: visit every list element in order
 
>>> list1 = [2, 3, 6, 0]
>>> for i in list1:
...        print i,
...
2 3 6 0

>>> a = [1, 13, 2, 6]
>>> length = len(a)
>>> for i in range(length):
...          a[i] = a[i] * 2
...
>>> print a
[2, 26, 4, 12]




Other List Operations




>>> a = [1, 2, 3]
>>> if 2 in a:
...        print '2 is in the list'
...
2 is in the list



Operation
Description
list.sort()
sorts the entries into ascending order
list.reverse()
reverses the order of the list items
list.index(x)
returns the index of the first occurrence of x in list
Error if x does not occur in list
list.count(x)
returns the number of occurrences of x in list
list.pop(i)
deletes and returns item at index i in list
list.remove(x)
removes 1st occurrence of x from list
Error if x is not found in list
del list[i:j]
removes items from index i to index j-1
same as: list[i:j] = []
min(list)
returns the smallest list item
max(list)
returns the largest list item