Linux/Unix > Python Essential Reference, Second Edition > 1. A Tutorial Introduction > Lists and Tuples | See All Titles

< BACK | Make Note | Bookmark | CONTINUE >

155117184014003188065099048180054212144238241179195140058238110137110162165008178174077032

### Lists and Tuples

Just as strings are sequences of characters, lists and tuples are sequences of arbitrary objects. You create a list as follows:

    names = [ "Dave", "Mark", "Ann", "Phil" ]

Lists are indexed by integers starting with zero. Use the indexing operator to access and modify individual items of the list:

    a = names[2]             # Returns the third item of the list, "Ann"
    names[0] = "Jeff"        # Changes the first item to "Jeff"

The length of a list can be obtained using the `len()` function:

    print len(names)        # prints 4

To append new items to a list, use the `append()` method:

    names.append("Kate")

To insert an item into the list, use the `insert()` method:

    names.insert(2, "Sydney")

You can extract or reassign a portion of a list by using the slicing operator:

    b = names[0:2]                      # Returns [ "Jeff", "Mark" ]
    c = names[2:]                       # Returns [ "Sydney", "Ann", "Phil", "Kate" ]
    names[1] = 'Jeff'                   # Replace the 2nd item in names with "Jeff"
    names[0:2] = ['Dave','Mark','Jeff'] # Replace the first two items of
                                        # the list with the list on the right.

Use the plus (`+`) operator to concatenate lists:

    a = [1,2,3] + [4,5]     # Result is [1,2,3,4,5]

Lists can contain any kind of Python object, including other lists, as in the following example:

    a = [1,"Dave",3.14, ["Mark", 7, 9, [100,101]], 10]

Nested lists are accessed as follows:

    a[1]            # Returns "Dave"
    a[3][2]         # Returns 9
    a[3][3][1]      # Returns 101

The program in Listing 1.2 illustrates a few more advanced features of lists by reading a list of numbers from a file and outputting the minimum and maximum values.

##### Listing 1.2 Advanced List Features

    import sys                       # Load the sys module
    f = open(sys.argv[1])            # Filename on the command line
    svalues = f.readlines()          # Read all lines into a list
    f.close()

    # Convert all of the input values from strings to floats
    fvalues = [float(s) for s in svalues]

    # Print min and max values
    print "The minimum value is ", min(fvalues)
    print "The maximum value is ", max(fvalues)

The first line of this program uses the `import` statement to load the `sys` module from the Python library.

The `open()` method uses a filename that has been supplied as a command-line option and stored in the list `sys.argv`. The `readlines()` method reads all the input lines into a list of strings.

The expression `[float(s) for s in svalues]` constructs a new list by looping over all the strings in the list `svalues` and applying the function `float()` to each element. This particularly powerful method of constructing a list is known as a list comprehension.

After the input lines have been converted into a list of floating-point numbers, the built-in `min()` and `max()` functions compute the minimum and maximum values.

Closely related to lists is the tuple datatype. You create tuples by enclosing a group of values in parentheses or with a comma-separated list, like this:

    a = (1,4,5,-9,10)
    b = (7,)                                 # Singleton (note extra ,)
    person = (first_name, last_name, phone)

Sometimes Python recognizes that a tuple is intended even if the parentheses are missing:

    a = 1,4,5,-9,10
    b = 7,
    person = first_name, last_name, phone

Tuples support most of the same operations as lists, such as indexing, slicing, and concatenation. The only difference is that you cannot modify the contents of a tuple after creation––that is, you cannot modify individual elements, or append new elements to a tuple.

| Last updated on 3/28/2002 Python Essential Reference, Second Edition, © 2002 New Riders Publishing

< BACK | Make Note | Bookmark | CONTINUE >

© 2002, O'Reilly & Associates, Inc.