CS 61A Lecture 10 Announcements Lists ['Demo'] Working with Lists - - PowerPoint PPT Presentation

cs 61a lecture 10 announcements lists
SMART_READER_LITE
LIVE PREVIEW

CS 61A Lecture 10 Announcements Lists ['Demo'] Working with Lists - - PowerPoint PPT Presentation

CS 61A Lecture 10 Announcements Lists ['Demo'] Working with Lists 4 Working with Lists >>> digits = [1, 8, 2, 8] 4 Working with Lists >>> digits = [1, 8, 2, 8] >>> digits = [2//2, 2+2+2+2, 2, 2*2*2] 4 Working


slide-1
SLIDE 1

CS 61A Lecture 10

slide-2
SLIDE 2

Announcements

slide-3
SLIDE 3

Lists

['Demo']

slide-4
SLIDE 4

Working with Lists

4

slide-5
SLIDE 5

Working with Lists

>>> digits = [1, 8, 2, 8]

4

slide-6
SLIDE 6

Working with Lists

>>> digits = [1, 8, 2, 8]

4

>>> digits = [2//2, 2+2+2+2, 2, 2*2*2]

slide-7
SLIDE 7

Working with Lists

>>> digits = [1, 8, 2, 8]

4

The number of elements >>> digits = [2//2, 2+2+2+2, 2, 2*2*2]

slide-8
SLIDE 8

Working with Lists

>>> digits = [1, 8, 2, 8]

4

The number of elements >>> len(digits) 4 >>> digits = [2//2, 2+2+2+2, 2, 2*2*2]

slide-9
SLIDE 9

Working with Lists

>>> digits = [1, 8, 2, 8]

4

The number of elements >>> len(digits) 4 An element selected by its index >>> digits = [2//2, 2+2+2+2, 2, 2*2*2]

slide-10
SLIDE 10

Working with Lists

>>> digits = [1, 8, 2, 8]

4

The number of elements >>> len(digits) 4 An element selected by its index >>> digits[3] 8 >>> digits = [2//2, 2+2+2+2, 2, 2*2*2]

slide-11
SLIDE 11

Working with Lists

>>> digits = [1, 8, 2, 8]

4

The number of elements >>> len(digits) 4 An element selected by its index >>> digits[3] 8 >>> getitem(digits, 3) 8 >>> digits = [2//2, 2+2+2+2, 2, 2*2*2]

slide-12
SLIDE 12

Working with Lists

>>> digits = [1, 8, 2, 8]

4

The number of elements >>> len(digits) 4 An element selected by its index >>> digits[3] 8 Concatenation and repetition >>> getitem(digits, 3) 8 >>> digits = [2//2, 2+2+2+2, 2, 2*2*2]

slide-13
SLIDE 13

Working with Lists

>>> digits = [1, 8, 2, 8]

4

The number of elements >>> len(digits) 4 An element selected by its index >>> digits[3] 8 >>> [2, 7] + digits * 2 [2, 7, 1, 8, 2, 8, 1, 8, 2, 8] Concatenation and repetition >>> getitem(digits, 3) 8 >>> digits = [2//2, 2+2+2+2, 2, 2*2*2]

slide-14
SLIDE 14

Working with Lists

>>> digits = [1, 8, 2, 8]

4

The number of elements >>> len(digits) 4 An element selected by its index >>> digits[3] 8 >>> [2, 7] + digits * 2 [2, 7, 1, 8, 2, 8, 1, 8, 2, 8] Concatenation and repetition >>> getitem(digits, 3) 8 >>> add([2, 7], mul(digits, 2)) [2, 7, 1, 8, 2, 8, 1, 8, 2, 8] >>> digits = [2//2, 2+2+2+2, 2, 2*2*2]

slide-15
SLIDE 15

Working with Lists

>>> digits = [1, 8, 2, 8]

4

The number of elements >>> len(digits) 4 An element selected by its index >>> digits[3] 8 Nested lists >>> [2, 7] + digits * 2 [2, 7, 1, 8, 2, 8, 1, 8, 2, 8] Concatenation and repetition >>> getitem(digits, 3) 8 >>> add([2, 7], mul(digits, 2)) [2, 7, 1, 8, 2, 8, 1, 8, 2, 8] >>> digits = [2//2, 2+2+2+2, 2, 2*2*2]

slide-16
SLIDE 16

Working with Lists

>>> digits = [1, 8, 2, 8]

4

The number of elements >>> len(digits) 4 An element selected by its index >>> digits[3] 8 Nested lists >>> pairs = [[10, 20], [30, 40]] >>> pairs[1] [30, 40] >>> pairs[1][0] 30 >>> [2, 7] + digits * 2 [2, 7, 1, 8, 2, 8, 1, 8, 2, 8] Concatenation and repetition >>> getitem(digits, 3) 8 >>> add([2, 7], mul(digits, 2)) [2, 7, 1, 8, 2, 8, 1, 8, 2, 8] >>> digits = [2//2, 2+2+2+2, 2, 2*2*2]

slide-17
SLIDE 17

Containers

slide-18
SLIDE 18

Containers

6

slide-19
SLIDE 19

Containers

Built-in operators for testing whether an element appears in a compound value

6

slide-20
SLIDE 20

Containers

Built-in operators for testing whether an element appears in a compound value

6

>>> digits = [1, 8, 2, 8]

slide-21
SLIDE 21

Containers

Built-in operators for testing whether an element appears in a compound value

6

>>> digits = [1, 8, 2, 8] >>> 1 in digits True

slide-22
SLIDE 22

Containers

Built-in operators for testing whether an element appears in a compound value

6

>>> digits = [1, 8, 2, 8] >>> 1 in digits True >>> 8 in digits True

slide-23
SLIDE 23

Containers

Built-in operators for testing whether an element appears in a compound value

6

>>> digits = [1, 8, 2, 8] >>> 1 in digits True >>> 8 in digits True >>> 5 not in digits True

slide-24
SLIDE 24

Containers

Built-in operators for testing whether an element appears in a compound value

6

>>> digits = [1, 8, 2, 8] >>> 1 in digits True >>> 8 in digits True >>> 5 not in digits True >>> not(5 in digits) True

slide-25
SLIDE 25

Containers

Built-in operators for testing whether an element appears in a compound value

6

>>> digits = [1, 8, 2, 8] >>> 1 in digits True >>> 8 in digits True >>> 5 not in digits True >>> not(5 in digits) True (Demo)

slide-26
SLIDE 26

For Statements

(Demo)

slide-27
SLIDE 27

Sequence Iteration

8

slide-28
SLIDE 28

Sequence Iteration

def count(s, value): total = 0 for element in s: if element == value: total = total + 1 return total

8

slide-29
SLIDE 29

Sequence Iteration

def count(s, value): total = 0 for element in s: if element == value: total = total + 1 return total Name bound in the first frame

  • f the current environment

(not a new frame)

8

slide-30
SLIDE 30

For Statement Execution Procedure

9

slide-31
SLIDE 31

For Statement Execution Procedure

for <name> in <expression>: <suite>

9

slide-32
SLIDE 32

For Statement Execution Procedure

for <name> in <expression>: <suite>

  • 1. Evaluate the header <expression>, which must yield an iterable value (a sequence)

9

slide-33
SLIDE 33

For Statement Execution Procedure

for <name> in <expression>: <suite>

  • 1. Evaluate the header <expression>, which must yield an iterable value (a sequence)
  • 2. For each element in that sequence, in order:

9

slide-34
SLIDE 34

For Statement Execution Procedure

for <name> in <expression>: <suite>

  • 1. Evaluate the header <expression>, which must yield an iterable value (a sequence)
  • 2. For each element in that sequence, in order:
  • A. Bind <name> to that element in the current frame

9

slide-35
SLIDE 35

For Statement Execution Procedure

for <name> in <expression>: <suite>

  • 1. Evaluate the header <expression>, which must yield an iterable value (a sequence)
  • 2. For each element in that sequence, in order:
  • A. Bind <name> to that element in the current frame
  • B. Execute the <suite>

9

slide-36
SLIDE 36

Sequence Unpacking in For Statements

10

slide-37
SLIDE 37

Sequence Unpacking in For Statements

>>> pairs = [[1, 2], [2, 2], [3, 2], [4, 4]] >>> same_count = 0

10

slide-38
SLIDE 38

Sequence Unpacking in For Statements

>>> pairs = [[1, 2], [2, 2], [3, 2], [4, 4]] >>> same_count = 0 A sequence of 
 fixed-length sequences

10

slide-39
SLIDE 39

Sequence Unpacking in For Statements

>>> pairs = [[1, 2], [2, 2], [3, 2], [4, 4]] >>> same_count = 0 >>> for x, y in pairs: ... if x == y: ... same_count = same_count + 1 >>> same_count 2 A sequence of 
 fixed-length sequences

10

slide-40
SLIDE 40

Sequence Unpacking in For Statements

>>> pairs = [[1, 2], [2, 2], [3, 2], [4, 4]] >>> same_count = 0 >>> for x, y in pairs: ... if x == y: ... same_count = same_count + 1 >>> same_count 2 A sequence of 
 fixed-length sequences A name for each element in a fixed-length sequence

10

slide-41
SLIDE 41

Sequence Unpacking in For Statements

>>> pairs = [[1, 2], [2, 2], [3, 2], [4, 4]] >>> same_count = 0 >>> for x, y in pairs: ... if x == y: ... same_count = same_count + 1 >>> same_count 2 A sequence of 
 fixed-length sequences A name for each element in a fixed-length sequence Each name is bound to a value, as in multiple assignment

10

slide-42
SLIDE 42

Ranges

slide-43
SLIDE 43

The Range Type

A range is a sequence of consecutive integers.*

12

slide-44
SLIDE 44

The Range Type

A range is a sequence of consecutive integers.*

* Ranges can actually represent more general integer sequences.

12

slide-45
SLIDE 45

..., -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, ...

The Range Type

A range is a sequence of consecutive integers.*

* Ranges can actually represent more general integer sequences.

12

slide-46
SLIDE 46

..., -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, ...

The Range Type

A range is a sequence of consecutive integers.*

* Ranges can actually represent more general integer sequences.

range(-2, 2)

12

slide-47
SLIDE 47

..., -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, ...

The Range Type

A range is a sequence of consecutive integers.*

* Ranges can actually represent more general integer sequences.

range(-2, 2)

12

slide-48
SLIDE 48

..., -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, ...

The Range Type

A range is a sequence of consecutive integers.*

* Ranges can actually represent more general integer sequences.

range(-2, 2)

12

slide-49
SLIDE 49

..., -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, ...

The Range Type

A range is a sequence of consecutive integers.*

* Ranges can actually represent more general integer sequences.

range(-2, 2)

12

slide-50
SLIDE 50

..., -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, ...

The Range Type

A range is a sequence of consecutive integers.*

* Ranges can actually represent more general integer sequences.

range(-2, 2) Length: ending value - starting value

12

slide-51
SLIDE 51

..., -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, ...

The Range Type

A range is a sequence of consecutive integers.*

* Ranges can actually represent more general integer sequences.

range(-2, 2) Length: ending value - starting value Element selection: starting value + index

12

slide-52
SLIDE 52

..., -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, ...

The Range Type

>>> list(range(-2, 2)) [-2, -1, 0, 1] >>> list(range(4)) [0, 1, 2, 3] A range is a sequence of consecutive integers.*

* Ranges can actually represent more general integer sequences.

range(-2, 2) Length: ending value - starting value Element selection: starting value + index

12

slide-53
SLIDE 53

..., -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, ...

The Range Type

>>> list(range(-2, 2)) [-2, -1, 0, 1] >>> list(range(4)) [0, 1, 2, 3] A range is a sequence of consecutive integers.*

* Ranges can actually represent more general integer sequences.

range(-2, 2) Length: ending value - starting value Element selection: starting value + index List constructor

12

slide-54
SLIDE 54

..., -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, ...

The Range Type

>>> list(range(-2, 2)) [-2, -1, 0, 1] >>> list(range(4)) [0, 1, 2, 3] A range is a sequence of consecutive integers.*

* Ranges can actually represent more general integer sequences.

range(-2, 2) Length: ending value - starting value Element selection: starting value + index List constructor Range with a 0 starting value

12

slide-55
SLIDE 55

..., -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, ...

The Range Type

>>> list(range(-2, 2)) [-2, -1, 0, 1] >>> list(range(4)) [0, 1, 2, 3] A range is a sequence of consecutive integers.*

* Ranges can actually represent more general integer sequences.

range(-2, 2) Length: ending value - starting value Element selection: starting value + index List constructor Range with a 0 starting value (Demo)

12

slide-56
SLIDE 56

List Comprehensions

slide-57
SLIDE 57

List Comprehensions

>>> letters = ['a', 'b', 'c', 'd', 'e', 'f', 'm', 'n', 'o', 'p'] >>> [letters[i] for i in [3, 4, 6, 8]]

slide-58
SLIDE 58

List Comprehensions

>>> letters = ['a', 'b', 'c', 'd', 'e', 'f', 'm', 'n', 'o', 'p'] >>> [letters[i] for i in [3, 4, 6, 8]]

['d', 'e', 'm', 'o']

slide-59
SLIDE 59

List Comprehensions

14

slide-60
SLIDE 60

List Comprehensions

[<map exp> for <name> in <iter exp> if <filter exp>]

14

slide-61
SLIDE 61

List Comprehensions

[<map exp> for <name> in <iter exp> if <filter exp>] Short version: [<map exp> for <name> in <iter exp>]

14

slide-62
SLIDE 62

List Comprehensions

[<map exp> for <name> in <iter exp> if <filter exp>] Short version: [<map exp> for <name> in <iter exp>] A combined expression that evaluates to a list using this evaluation procedure:

14

slide-63
SLIDE 63

List Comprehensions

[<map exp> for <name> in <iter exp> if <filter exp>] Short version: [<map exp> for <name> in <iter exp>] A combined expression that evaluates to a list using this evaluation procedure:

  • 1. Add a new frame with the current frame as its parent

14

slide-64
SLIDE 64

List Comprehensions

[<map exp> for <name> in <iter exp> if <filter exp>] Short version: [<map exp> for <name> in <iter exp>] A combined expression that evaluates to a list using this evaluation procedure:

  • 1. Add a new frame with the current frame as its parent
  • 2. Create an empty result list that is the value of the expression

14

slide-65
SLIDE 65

List Comprehensions

[<map exp> for <name> in <iter exp> if <filter exp>] Short version: [<map exp> for <name> in <iter exp>] A combined expression that evaluates to a list using this evaluation procedure:

  • 1. Add a new frame with the current frame as its parent
  • 2. Create an empty result list that is the value of the expression
  • 3. For each element in the iterable value of <iter exp>:

14

slide-66
SLIDE 66

List Comprehensions

[<map exp> for <name> in <iter exp> if <filter exp>] Short version: [<map exp> for <name> in <iter exp>] A combined expression that evaluates to a list using this evaluation procedure:

  • 1. Add a new frame with the current frame as its parent
  • 2. Create an empty result list that is the value of the expression
  • 3. For each element in the iterable value of <iter exp>:
  • A. Bind <name> to that element in the new frame from step 1

14

slide-67
SLIDE 67

List Comprehensions

[<map exp> for <name> in <iter exp> if <filter exp>] Short version: [<map exp> for <name> in <iter exp>] A combined expression that evaluates to a list using this evaluation procedure:

  • 1. Add a new frame with the current frame as its parent
  • 2. Create an empty result list that is the value of the expression
  • 3. For each element in the iterable value of <iter exp>:
  • A. Bind <name> to that element in the new frame from step 1
  • B. If <filter exp> evaluates to a true value, then add the value of <map exp>

to the result list

14

slide-68
SLIDE 68

Strings

slide-69
SLIDE 69

Strings are an Abstraction

16

slide-70
SLIDE 70

Strings are an Abstraction

Representing data: '200' '1.2e-5' 'False' '[1, 2]'

16

slide-71
SLIDE 71

Strings are an Abstraction

Representing data: '200' '1.2e-5' 'False' '[1, 2]' Representing language: """And, as imagination bodies forth The forms of things unknown, the poet's pen Turns them to shapes, and gives to airy nothing A local habitation and a name. """

16

slide-72
SLIDE 72

Strings are an Abstraction

Representing data: '200' '1.2e-5' 'False' '[1, 2]' Representing language: """And, as imagination bodies forth The forms of things unknown, the poet's pen Turns them to shapes, and gives to airy nothing A local habitation and a name. """ Representing programs: 'curry = lambda f: lambda x: lambda y: f(x, y)'

16

slide-73
SLIDE 73

Strings are an Abstraction

Representing data: '200' '1.2e-5' 'False' '[1, 2]' Representing language: """And, as imagination bodies forth The forms of things unknown, the poet's pen Turns them to shapes, and gives to airy nothing A local habitation and a name. """ Representing programs: 'curry = lambda f: lambda x: lambda y: f(x, y)' (Demo)

16

slide-74
SLIDE 74

String Literals Have Three Forms

>>> 'I am string!' 'I am string!' >>> "I've got an apostrophe" "I've got an apostrophe" >>> '' ''

17

slide-75
SLIDE 75

String Literals Have Three Forms

>>> 'I am string!' 'I am string!' >>> "I've got an apostrophe" "I've got an apostrophe" >>> '' '' Single-quoted and double-quoted strings are equivalent

17

slide-76
SLIDE 76

String Literals Have Three Forms

>>> 'I am string!' 'I am string!' >>> "I've got an apostrophe" "I've got an apostrophe" >>> '' '' >>> """The Zen of Python claims, Readability counts. Read more: import this.""" 'The Zen of Python\nclaims, Readability counts.\nRead more: import this.' Single-quoted and double-quoted strings are equivalent

17

slide-77
SLIDE 77

String Literals Have Three Forms

>>> 'I am string!' 'I am string!' >>> "I've got an apostrophe" "I've got an apostrophe" >>> '' '' >>> """The Zen of Python claims, Readability counts. Read more: import this.""" 'The Zen of Python\nclaims, Readability counts.\nRead more: import this.' A backslash "escapes" the following character Single-quoted and double-quoted strings are equivalent

17

slide-78
SLIDE 78

String Literals Have Three Forms

>>> 'I am string!' 'I am string!' >>> "I've got an apostrophe" "I've got an apostrophe" >>> '' '' >>> """The Zen of Python claims, Readability counts. Read more: import this.""" 'The Zen of Python\nclaims, Readability counts.\nRead more: import this.' "Line feed" character represents a new line A backslash "escapes" the following character Single-quoted and double-quoted strings are equivalent

17

slide-79
SLIDE 79

Dictionaries

{'Dem': 0}

slide-80
SLIDE 80

Limitations on Dictionaries

19

slide-81
SLIDE 81

Limitations on Dictionaries

Dictionaries are unordered collections of key-value pairs

19

slide-82
SLIDE 82

Limitations on Dictionaries

Dictionaries are unordered collections of key-value pairs Dictionary keys do have two restrictions:

19

slide-83
SLIDE 83

Limitations on Dictionaries

Dictionaries are unordered collections of key-value pairs Dictionary keys do have two restrictions:

  • A key of a dictionary cannot be a list or a dictionary (or any mutable type)

19

slide-84
SLIDE 84

Limitations on Dictionaries

Dictionaries are unordered collections of key-value pairs Dictionary keys do have two restrictions:

  • A key of a dictionary cannot be a list or a dictionary (or any mutable type)
  • Two keys cannot be equal; There can be at most one value for a given key

19

slide-85
SLIDE 85

Limitations on Dictionaries

Dictionaries are unordered collections of key-value pairs Dictionary keys do have two restrictions:

  • A key of a dictionary cannot be a list or a dictionary (or any mutable type)
  • Two keys cannot be equal; There can be at most one value for a given key

This first restriction is tied to Python's underlying implementation of dictionaries

19

slide-86
SLIDE 86

Limitations on Dictionaries

Dictionaries are unordered collections of key-value pairs Dictionary keys do have two restrictions:

  • A key of a dictionary cannot be a list or a dictionary (or any mutable type)
  • Two keys cannot be equal; There can be at most one value for a given key

This first restriction is tied to Python's underlying implementation of dictionaries The second restriction is part of the dictionary abstraction

19

slide-87
SLIDE 87

Limitations on Dictionaries

Dictionaries are unordered collections of key-value pairs Dictionary keys do have two restrictions:

  • A key of a dictionary cannot be a list or a dictionary (or any mutable type)
  • Two keys cannot be equal; There can be at most one value for a given key

This first restriction is tied to Python's underlying implementation of dictionaries The second restriction is part of the dictionary abstraction If you want to associate multiple values with a key, store them all in a sequence value

19