Tuples

55
Tuples Python Tuples Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See http://software-carpentry.org/license.html for more information.

description

Python - Tuples

Transcript of Tuples

Page 1: Tuples

Tuples

Python

Tuples

Copyright © Software Carpentry 2010

This work is licensed under the Creative Commons Attribution License

See http://software-carpentry.org/license.html for more information.

Page 2: Tuples

A list is a mutable heterogeneous sequence

Python Tuples

Page 3: Tuples

A list is a mutable heterogeneous sequence

A tuple is an immutable heterogeneous sequence

Python Tuples

Page 4: Tuples

A list is a mutable heterogeneous sequence

A tuple is an immutable heterogeneous sequence

I.e., a list that can't be changed after creationI.e., a list that can't be changed after creation

Python Tuples

Page 5: Tuples

A list is a mutable heterogeneous sequence

A tuple is an immutable heterogeneous sequence

I.e., a list that can't be changed after creationI.e., a list that can't be changed after creation

Why provide a less general type of collection?

Python Tuples

Page 6: Tuples

A list is a mutable heterogeneous sequence

A tuple is an immutable heterogeneous sequence

I.e., a list that can't be changed after creationI.e., a list that can't be changed after creation

Why provide a less general type of collection?

Full explanation will have to wait for lecture on

sets and dictionaries

Python Tuples

Page 7: Tuples

A list is a mutable heterogeneous sequence

A tuple is an immutable heterogeneous sequence

I.e., a list that can't be changed after creationI.e., a list that can't be changed after creation

Why provide a less general type of collection?

Full explanation will have to wait for lecture on

sets and dictionaries

Useful even before then

Python Tuples

Useful even before then

Page 8: Tuples

Create tuples using () instead of []

Python Tuples

Page 9: Tuples

Create tuples using () instead of []

Still index using [] (because everything does)

Python Tuples

Page 10: Tuples

Create tuples using () instead of []

Still index using [] (because everything does)

>>>>>>>>>>>> primes = (2, 3, 5, 7)>>>>>>>>>>>> primes = (2, 3, 5, 7)

>>>>>>>>>>>> print primes[0], primes[-1]

2 7

>>>>>>>>>>>>

Python Tuples

Page 11: Tuples

Create tuples using () instead of []

Still index using [] (because everything does)

>>>>>>>>>>>> primes = (2, 3, 5, 7)>>>>>>>>>>>> primes = (2, 3, 5, 7)

>>>>>>>>>>>> print primes[0], primes[-1]

2 7

>>>>>>>>>>>> empty_tuple = ()

>>>>>>>>>>>> print len(empty_tuple)

0

>>>>>>>>>>>>

Python Tuples

Page 12: Tuples

Create tuples using () instead of []

Still index using [] (because everything does)

>>>>>>>>>>>> primes = (2, 3, 5, 7)>>>>>>>>>>>> primes = (2, 3, 5, 7)

>>>>>>>>>>>> print primes[0], primes[-1]

2 7

>>>>>>>>>>>> empty_tuple = ()

>>>>>>>>>>>> print len(empty_tuple)

0

>>>>>>>>>>>>

Must use for tuple with one element

Python Tuples

Must use (val,) for tuple with one element

Page 13: Tuples

Create tuples using () instead of []

Still index using [] (because everything does)

>>>>>>>>>>>> primes = (2, 3, 5, 7)>>>>>>>>>>>> primes = (2, 3, 5, 7)

>>>>>>>>>>>> print primes[0], primes[-1]

2 7

>>>>>>>>>>>> empty_tuple = ()

>>>>>>>>>>>> print len(empty_tuple)

0

>>>>>>>>>>>>

Must use for tuple with one element

Python Tuples

Must use (val,) for tuple with one element

Because math says that (5) is just 5

Page 14: Tuples

Create tuples using () instead of []

Still index using [] (because everything does)

>>>>>>>>>>>> primes = (2, 3, 5, 7)>>>>>>>>>>>> primes = (2, 3, 5, 7)

>>>>>>>>>>>> print primes[0], primes[-1]

2 7

>>>>>>>>>>>> empty_tuple = ()

>>>>>>>>>>>> print len(empty_tuple)

0

>>>>>>>>>>>>

Must use for tuple with one element

Python Tuples

Must use (val,) for tuple with one element

Because math says that (5) is just 5

One of Python's few syntactic warts…

Page 15: Tuples

Don't need parentheses if context is enough

Python Tuples

Page 16: Tuples

Don't need parentheses if context is enough

>>>>>>>>>>>> primes = 2, 3, 5, 7

>>>>>>>>>>>> print primes

(2, 3, 5, 7)(2, 3, 5, 7)

>>>>>>>>>>>>

Python Tuples

Page 17: Tuples

Don't need parentheses if context is enough

>>>>>>>>>>>> primes = 2, 3, 5, 7

>>>>>>>>>>>> print primes

(2, 3, 5, 7)(2, 3, 5, 7)

>>>>>>>>>>>>

Can use on the left of assignment

Python Tuples

Page 18: Tuples

Don't need parentheses if context is enough

>>>>>>>>>>>> primes = 2, 3, 5, 7

>>>>>>>>>>>> print primes

(2, 3, 5, 7)(2, 3, 5, 7)

>>>>>>>>>>>>

Can use on the left of assignment

>>>>>>>>>>>> left, middle, right = 2, 3, 5

>>>>>>>>>>>>

Python Tuples

Page 19: Tuples

Don't need parentheses if context is enough

>>>>>>>>>>>> primes = 2, 3, 5, 7

>>>>>>>>>>>> print primes

(2, 3, 5, 7)(2, 3, 5, 7)

>>>>>>>>>>>>

Can use on the left of assignment

>>>>>>>>>>>> left, middle, right = 2, 3, 5

>>>>>>>>>>>> print left

2

>>>>>>>>>>>> print middle

Python Tuples

>>>>>>>>>>>> print middle

3

>>>>>>>>>>>> print right

5

>>>>>>>>>>>>

Page 20: Tuples

Don't need parentheses if context is enough

>>>>>>>>>>>> primes = 2, 3, 5, 7

>>>>>>>>>>>> print primes

(2, 3, 5, 7)(2, 3, 5, 7)

>>>>>>>>>>>>

Can use on the left of assignment

>>>>>>>>>>>> left, middle, right = 2, 3, 5

>>>>>>>>>>>> print left

2

>>>>>>>>>>>> print middle

Python Tuples

>>>>>>>>>>>> print middle

3

>>>>>>>>>>>> print right

5

>>>>>>>>>>>>

With great power comes

great responsibility…

Page 21: Tuples

Allows functions to return multiple values

Python Tuples

Page 22: Tuples

Allows functions to return multiple values

>>>>>>>>>>>> def bounds(values):

............ low = min(values)

............ high = max(values)............ high = max(values)

............ return (low, high)

............

>>>>>>>>>>>>

Python Tuples

Page 23: Tuples

Allows functions to return multiple values

>>>>>>>>>>>> def bounds(values):

............ low = min(values)

............ high = max(values)............ high = max(values)

............ return (low, high)

............

>>>>>>>>>>>> print bounds([3, -5, 9, 4, 17, 0])

(-5, 17)

>>>>>>>>>>>>

Python Tuples

Page 24: Tuples

Allows functions to return multiple values

>>>>>>>>>>>> def bounds(values):

............ low = min(values)

............ high = max(values)............ high = max(values)

............ return (low, high)

............

>>>>>>>>>>>> print bounds([3, -5, 9, 4, 17, 0])

(-5, 17)

>>> >>> >>> >>> least, greatest = bounds([3, -5, 9, 4, 17, 0])

>>>>>>>>>>>> printprintprintprint least

5

Python Tuples

5

>>> >>> >>> >>> printprintprintprint greatest

17

>>>

Page 25: Tuples

Sometimes used to return (success, result) pairs

Python Tuples

Page 26: Tuples

Sometimes used to return (success, result) pairs

defdefdefdef read_if_available(datafile_name):

ifififif file_exists(datafile_name):

......

returnreturnreturnreturn (TrueTrueTrueTrue, data_values)

elseelseelseelse:

returnreturnreturnreturn (FalseFalseFalseFalse, [])

Python Tuples

Page 27: Tuples

Sometimes used to return (success, result) pairs

defdefdefdef read_if_available(datafile_name):

ifififif file_exists(datafile_name):

......

returnreturnreturnreturn (TrueTrueTrueTrue, data_values)

elseelseelseelse:

returnreturnreturnreturn (FalseFalseFalseFalse, [])

success, data = read_if_available('mydata.dat')

ifififif success:

...

Python Tuples

...

Page 28: Tuples

Sometimes used to return (success, result) pairs

defdefdefdef read_if_available(datafile_name):

ifififif file_exists(datafile_name):

......

returnreturnreturnreturn (TrueTrueTrueTrue, data_values)

elseelseelseelse:

returnreturnreturnreturn (FalseFalseFalseFalse, [])

success, data = read_if_available('mydata.dat')

ifififif success:

...

Python Tuples

...

We'll meet a better way in the lecture on testing

Page 29: Tuples

Provides a quick way to swap variables' values

Python Tuples

Page 30: Tuples

Provides a quick way to swap variables' values

>>>>>>>>>>>> left, right = 0, 10

>>>>>>>>>>>>

Python Tuples

Page 31: Tuples

Provides a quick way to swap variables' values

>>>>>>>>>>>> left, right = 0, 10

>>>>>>>>>>>> right, left = left, right

>>>>>>>>>>>>>>>>>>>>>>>>

Python Tuples

Page 32: Tuples

Provides a quick way to swap variables' values

>>>>>>>>>>>> left, right = 0, 10

>>>>>>>>>>>> right, left = left, right

>>>>>>>>>>>> print right>>>>>>>>>>>> print right

0

>>>>>>>>>>>> print left

10

>>>>>>>>>>>>

Python Tuples

Page 33: Tuples

Provides a quick way to swap variables' values

>>>>>>>>>>>> left, right = 0, 10

>>>>>>>>>>>> right, left = left, right

>>>>>>>>>>>> print right>>>>>>>>>>>> print right

0

>>>>>>>>>>>> print left

10

>>>>>>>>>>>>

Python creates temporaries if needed

Python Tuples

Page 34: Tuples

Provides a quick way to swap variables' values

>>>>>>>>>>>> left, right = 0, 10

>>>>>>>>>>>> right, left = left, right

>>>>>>>>>>>> print right>>>>>>>>>>>> print right

0

>>>>>>>>>>>> print left

10

>>>>>>>>>>>>

Python creates temporaries if needed

Python Tuples

left

right0

10

Page 35: Tuples

Provides a quick way to swap variables' values

>>>>>>>>>>>> left, right = 0, 10

>>>>>>>>>>>> right, left = left, right

>>>>>>>>>>>> print right>>>>>>>>>>>> print right

0

>>>>>>>>>>>> print left

10

>>>>>>>>>>>>

Python creates temporaries if needed

Python Tuples

left

right

_tmp_

0

10

Page 36: Tuples

Provides a quick way to swap variables' values

>>>>>>>>>>>> left, right = 0, 10

>>>>>>>>>>>> right, left = left, right

>>>>>>>>>>>> print right>>>>>>>>>>>> print right

0

>>>>>>>>>>>> print left

10

>>>>>>>>>>>>

Python creates temporaries if needed

Python Tuples

left

right

_tmp_

0

10

Page 37: Tuples

Provides a quick way to swap variables' values

>>>>>>>>>>>> left, right = 0, 10

>>>>>>>>>>>> right, left = left, right

>>>>>>>>>>>> print right>>>>>>>>>>>> print right

0

>>>>>>>>>>>> print left

10

>>>>>>>>>>>>

Python creates temporaries if needed

Python Tuples

left

right

_tmp_

0

10

Page 38: Tuples

Provides a quick way to swap variables' values

>>>>>>>>>>>> left, right = 0, 10

>>>>>>>>>>>> right, left = left, right

>>>>>>>>>>>> print right>>>>>>>>>>>> print right

0

>>>>>>>>>>>> print left

10

>>>>>>>>>>>>

Python creates temporaries if needed

Python Tuples

left

right

_tmp_

0

10

Page 39: Tuples

Provides a quick way to swap variables' values

>>>>>>>>>>>> left, right = 0, 10

>>>>>>>>>>>> right, left = left, right

>>>>>>>>>>>> print right>>>>>>>>>>>> print right

0

>>>>>>>>>>>> print left

10

>>>>>>>>>>>>

Python creates temporaries if needed

Python Tuples

left

right0

10

Page 40: Tuples

And an easy way to unpack a list

Python Tuples

Page 41: Tuples

And an easy way to unpack a list

>>>>>>>>>>>> colors = ['yellow', 'magenta', 'lavender']

>>>>>>>>>>>>

Python Tuples

Page 42: Tuples

And an easy way to unpack a list

>>>>>>>>>>>> colors = ['yellow', 'magenta', 'lavender']

>>>>>>>>>>>> left, middle, right = colors

>>>>>>>>>>>>>>>>>>>>>>>>

Python Tuples

Page 43: Tuples

And an easy way to unpack a list

>>>>>>>>>>>> colors = ['yellow', 'magenta', 'lavender']

>>>>>>>>>>>> left, middle, right = colors

>>>>>>>>>>>> print left>>>>>>>>>>>> print left

yellow

>>>>>>>>>>>> print middle

magenta

>>>>>>>>>>>> print right

lavender

>>>>>>>>>>>>

Python Tuples

Page 44: Tuples

And an easy way to unpack a list

>>>>>>>>>>>> colors = ['yellow', 'magenta', 'lavender']

>>>>>>>>>>>> left, middle, right = colors

>>>>>>>>>>>> print left>>>>>>>>>>>> print left

yellow

>>>>>>>>>>>> print middle

magenta

>>>>>>>>>>>> print right

lavender

>>>>>>>>>>>>

Python Tuples

Number of values must be the same

Page 45: Tuples

Often used in loops

Python Tuples

Page 46: Tuples

Often used in loops

>>>>>>>>>>>> pairs = ((1, 10), (2, 20), (3, 30), (4, 40))

>>>>>>>>>>>>

Python Tuples

Page 47: Tuples

Often used in loops

>>>>>>>>>>>> pairs = ((1, 10), (2, 20), (3, 30), (4, 40))

>>>>>>>>>>>> for p in pairs:

............ print p[0] + p[1]............ print p[0] + p[1]

Python Tuples

Page 48: Tuples

Often used in loops

>>>>>>>>>>>> pairs = ((1, 10), (2, 20), (3, 30), (4, 40))

>>>>>>>>>>>> for p in pairs:

............ print p[0] + p[1]............ print p[0] + p[1]

Python Tuples

Page 49: Tuples

Often used in loops

>>>>>>>>>>>> pairs = ((1, 10), (2, 20), (3, 30), (4, 40))

>>>>>>>>>>>> for (low, high) in pairs:

............ print low + high............ print low + high

Python Tuples

Page 50: Tuples

Often used in loops

>>>>>>>>>>>> pairs = ((1, 10), (2, 20), (3, 30), (4, 40))

>>>>>>>>>>>> for (low, high) in pairs:

............ print low + high............ print low + high

............

11

22

33

44

>>>>>>>>>>>>

Python Tuples

Page 51: Tuples

The enumerate function produces (index, value) pairs

Python Tuples

Page 52: Tuples

The enumerate function produces (index, value) pairs

>>>>>>>>>>>> colors = ['yellow', 'magenta', 'lavender']

>>>>>>>>>>>> for (i, name) in enumerate(colors):

............ print i, name............ print i, name

Python Tuples

Page 53: Tuples

The enumerate function produces (index, value) pairs

>>>>>>>>>>>> colors = ['yellow', 'magenta', 'lavender']

>>>>>>>>>>>> for (i, name) in enumerate(colors):

............ print i, name............ print i, name

............

0 yellow

1 magenta

2 lavender

>>>>>>>>>>>>

Python Tuples

Page 54: Tuples

The enumerate function produces (index, value) pairs

>>>>>>>>>>>> colors = ['yellow', 'magenta', 'lavender']

>>>>>>>>>>>> for (i, name) in enumerate(colors):

............ print i, name............ print i, name

............

0 yellow

1 magenta

2 lavender

>>>>>>>>>>>>

Prefer this to range(len(values))

Python Tuples

Prefer this to range(len(values))

Page 55: Tuples

October 2010

created by

Greg Wilson

October 2010

Copyright © Software Carpentry 2010

This work is licensed under the Creative Commons Attribution License

See http://software-carpentry.org/license.html for more information.