Skip to main content

Foundations of Python Programming: Functions First

Section 9.10 The Accumulator Pattern with Lists

We can accumulate values into a list rather than accumulating a single numeric value. Consider, for example, the following program which transforms a list into a new list by squaring each of the values.
Here, we initialize the accumulator variable to be an empty list, on line 2.
We iterate through the sequence (line 3). On each iteration we transform the item by squaring it (line 4).
The update step appends the new item to the list which is stored in the accumulator variable (line 5). The update happens using the .append(), which mutates the list rather than using a reassignment. Instead, we could have written accum = accum + [x], or accum += [x]. In either case, we’d need to concatenate a list containing x, not just x itself.
At the end, we have accumulated a new list of the same length as the original, but with each item transformed into a new item. This is called a mapping operation, and we will revisit it in a later chapter.
Note how this differs from mutating the original list, as you saw in a previous section.
Check your understanding

Checkpoint 9.10.1.

    What is printed by the following statements?
    alist = [4,2,8,6,5]
    blist = [ ]
    for item in alist:
       blist.append(item+5)
    print(blist)
    
  • [4,2,8,6,5]
  • 5 is added to each item before the append is performed.
  • [4,2,8,6,5,5]
  • There are too many items in this list. Only 5 append operations are performed.
  • [9,7,13,11,10]
  • Yes, the for loop processes each item of the list. 5 is added before it is appended to blist.
  • Error, you cannot concatenate inside an append.
  • 5 is added to each item before the append operation is performed.

Checkpoint 9.10.2.

    What is printed by the following statements?
    lst= [3,0,9,4,1,7]
    new_list=[]
    for i in range(len(lst)):
       new_list.append(lst[i]+5)
    print(new_list)
    
  • [8,5,14,9,6]
  • Don’t forget the last item!
  • [8,5,14,9,6,12]
  • Yes, the for loop processes each item in lst. 5 is added before lst[i] is appended to new_list.
  • [3,0,9,4,1,7,5]
  • 5 is added to each item before the append operation is performed.
  • Error, you cannot concatenate inside an append.
  • It is OK to have a complex expression inside the call to the append method. The expression `lst[i]+5` is fully evaluated before the append operation is performed.

Checkpoint 9.10.3.

  1. For each word in the list verbs, add an -ing ending. Save this new list in a new list, ing.

Checkpoint 9.10.4.

Given the list of numbers, numbs, create a new list of those same numbers increased by 5. Save this new list to the variable newlist.

Checkpoint 9.10.5.

Given the list of numbers, numbs, modifiy the list numbs so that each of the original numbers are increased by 5. Note this is not an accumulator pattern problem, but its a good review.

Checkpoint 9.10.6.

For each number in lst_nums, multiply that number by 2 and append it to a new list called larger_nums.
You have attempted of activities on this page.