08-Lists

A List is a kind of Collection

• A collection allows us to put many values in a single “variable”

• A collection is nice because we can carry all many values around in one convenient package.

friends = [ 'Joseph', 'Glenn', 'Sally' ]

carryon = [ 'socks', 'shirt', 'perfume' ]

List Constants

• List constants are surrounded by square brackets and the elements in the list are separated by commas

• A list element can be any Python object - even another list

• A list can be empty

>>> print [1, 24, 76]

[1, 24, 76]

>>> print ['red', 'yellow', 'blue']

['red', 'yellow', 'blue']

>>> print ['red', 24, 98.6]

['red', 24, 98.599999999999994]

>>> print [ 1, [5, 6], 7]

[1, [5, 6], 7]

>>> print []

[]

Lists and definite loops - best pals

friends = ['Joseph', 'Glenn', 'Sally']

for friend in friends :

print 'Happy New Year:', friend

print 'Done!'

Looking Inside Lists

Just like strings, we can get at any single element in a list using an index specified in square brackets

>>> friends = [ 'Joseph', 'Glenn', 'Sally' ]

>>> print friends[1]

Glenn

Lists are Mutable

• Strings are “immutable” - we cannot change the contents of a string - we must make a new string to make any change

• Lists are “mutable’ - we can change an element of a list using the index operator

>>> fruit = 'Banana'

>>> fruit[0] = 'b'

Traceback

TypeError: 'str' object does not support item assignment

>>> x = fruit.lower()

>>> print x

banana

>>> lotto = [2, 14, 26, 41, 63]

>>> print lotto

[2, 14, 26, 41, 63]

>>> lotto[2] = 28

>>> print lotto

[2, 14, 28, 41, 63]

How Long is a List?

• The len() function takes a list as a parameter and returns the number of elements in the list

• Actually len() tells us the number of elements of any set or sequence (such as a string...)

>>> greet = 'Hello Bob'

>>> print len(greet)

9

>>> x = [ 1, 2, 'joe', 99]

>>> print len(x)

4

>>>

Using the range function

• The range function returns a list of numbers that range from zero to one less than the parameter

• We can construct an index loop using for and an integer iterator

>>> print range(4)

[0, 1, 2, 3]

>>> friends = ['Joseph', 'Glenn', 'Sally']

>>> print len(friends)

3

>>> print range(len(friends))

[0, 1, 2]

>>>

A tale of two loops...

friends = ['Joseph', 'Glenn', 'Sally']

for friend in friends :

print 'Happy New Year:', friend

for i in range(len(friends)) :

friend = friends[i]

print 'Happy New Year:', friend

Happy New Year: Joseph

Happy New Year: Glenn

Happy New Year: Sally

Concatenating lists using +

• We can create a new list by adding two existing lists together

>>> a = [1, 2, 3]

>>> b = [4, 5, 6]

>>> c = a + b

>>> print c

[1, 2, 3, 4, 5, 6]

>>> print a

[1, 2, 3]

Lists can be sliced using :

>>> t = [9, 41, 12, 3, 74, 15]

>>> t[1:3]

[41,12]

>>> t[:4]

[9, 41, 12, 3]

>>> t[3:]

[3, 74, 15]

>>> t[:]

[9, 41, 12, 3, 74, 15]

t = [9, 41, 12, 3, 74, 15]

print(t[0])

9

print(t[-1])

15

print(t[-4:-2])

[12, 3]

Remember: Just like in strings, the second number is “up to but not including”

List Methods

>>> x = list()

>>> type(x)

<type 'list'>

>>> dir(x)

['append', 'count', 'extend', 'index', 'insert',

'pop', 'remove', 'reverse', 'sort']

Building a List from Scratch

• We can create an empty list and then add elements using the append method

• The list stays in order and new elements are added at the end of the list

>>> stuff = list()

>>> stuff.append('book')

>>> stuff.append(99)

>>> print stuff

['book', 99]

>>> stuff.append('cookie')

>>> print stuff

['book', 99, 'cookie']

Is Something in a List?

• Python provides two operators that let you check if an item is in a list

• These are logical operators that return True or False

• They do not modify the list

>>> some = [1, 9, 21, 10, 16]

>>> 9 in some

True

>>> 15 in some

False

>>> 20 not in some

True

>>>

A List is an Ordered Sequence

• A list can hold many items and keeps those items in the order until we do something to change the order

• A list can be sorted (i.e., change its order)

• The sort method (unlike in strings) means “sort yourself”

>>> friends = [ 'Joseph', 'Glenn', 'Sally' ]

>>> friends.sort()

>>> print friends

['Glenn', 'Joseph', 'Sally']

>>> print friends[1]

Joseph

>>>

Built-in Functions and Lists

• There are a number of functions built into Python that take lists as parameters

• Remember the loops we built? These are much simpler.

>>> nums = [3, 41, 12, 9, 74, 15]

>>> print len(nums)

6

>>> print max(nums)

74

>>> print min(nums)

3

>>> print sum(nums)

154

>>> print sum(nums)/len(nums)

25

Best Friends: Strings and Lists

>>> abc = 'With three words'

>>> stuff = abc.split()

>>> print stuff

['With', 'three', 'words']

>>> print len(stuff)

3

>>> print stuff[0]

With

>>> print stuff

['With', 'three', 'words']

>>> for w in stuff :

... print w

...

With

Three

Words

>>>

● Split breaks a string into parts and produces a list of strings. We think of these as words. We can access a particular word or loop through all the words.

● When you do not specify a delimiter, multiple spaces are treated like one delimiter

● You can specify what delimiter character to use in the splitting