10.22. List ComprehensionsΒΆ

The previous example creates a list from a sequence of values based on some selection criteria. An easy way to do this type of processing in Python is to use a list comprehension. List comprehensions are concise ways to create lists. The general syntax is:

[<expression> for <item> in <sequence> if  <condition>]

where the if clause is optional. For example,

The expression describes each element of the list that is being built. The for clause iterates through each item in a sequence. The items are filtered by the if clause if there is one. In the example above, the for statement lets item take on all the values in the list mylist. Each item is then squared before it is added to the list that is being built. The result is a list of squares of the values in mylist.

To write the primes_upto function we will use the is_prime function to filter the sequence of integers coming from the range function. In other words, for every integer from 2 up to but not including n, if the integer is prime, keep it in the list.

def primes_upto(n):
    """ Return a list of all prime numbers less than n using a list comprehension. """

    result = [num for num in range(2,n) if is_prime(num)]
    return result

Note

This workspace is provided for your convenience. You can use this activecode window to try out anything you like.

Check your understanding

    list-22-1: What is printed by the following statements?

    alist = [4,2,8,6,5]
    blist = [num*2 for num in alist if num%2==1]
    print(blist)
    
  • [4,2,8,6,5]
  • Items from alist are doubled before being placed in blist.
  • [8,4,16,12,10]
  • Not all the items in alist are to be included in blist. Look at the if clause.
  • 10
  • The result needs to be a list.
  • [10].
  • Yes, 5 is the only odd number in alist. It is doubled before being placed in blist.
Next Section - 10.23. Nested Lists