"""tuples
http://openbookproject.net/thinkcs/python/english2e/ch11.html#tuples-and-mutability
"""


# A tuple is like a list - it is a sequence of elements that can be accessed
# by their index.
# The difference - tuples are immutable

# A tuple can be defined using syntax similar to a list, with
# parentheses replacing square brackets:

tup = (1, 5, 10, 20)

# it is possible to eliminate the parentheses:

tup = 1, 5, 10, 20

# It is slightly tricky to create a tuple with a single element:

tup = 5,
# or
tup = (5,)

# tuples support the same indexing and slice operations as strings and lists
# like lists you can't modify a tuple:

tup = ('a', 'b', 'c', 'd', 'e')
# now try modifying tup[0]:
tup[0] = 'z'

# when returning multiple objects from a function, you typically do so
# as a tuple:
def myfunc() :
    return 3,5,10

# you can now call this function as:
x,y,z = myfunc()
# or
tup = myfunc()
# and check that this is indeed a tuple:
print type(tup)

# tuples are particularly useful as keys for dictionaries