Tutoring/TA-ing at Data Analytics Lab (South 321)
Tutoring/TA-ing at Data Analytics Lab (South 321)
Student Ambassador Program
More information about the program is available at:
input()
function does not work well with your Spyder IDE from Anaconda Distribution, install the Spyder IDE in addition to Anaconda.Shortcuts
F9 runs a current line (where the blinking cursor bar is) or selected lines.
Home/End moves the blinking cursor bar to the beginning/end of the line.
PgUp/PgDn moves the blinking cursor bar to the top/bottom line of the script on the screen.
Shortcuts
Mac
#
.Windows
#
.# %%
defines a coding block in Spyder IDE.More Shortcuts
while
and for
while
and for
while
and for
. Repeat with while
count = 1 while count <= 5: print(count) count += 1
count
.while
loop compared the value of count
to 5 and continued if count
was less than or equal to 5.count
and then incremented its value by one with the statement count += 1
.count
with 5.count
is now 2, so the contents of the while
loop are again executed, and count
is incremented to 3.count
is incremented from 5 to 6 at the bottom of the loop.count <= 5
is now False
, and the while
loop ends.while
Asking the user for input
input()
function gets input from the keyboard.input()
is called, the program stops and waits for the user to type something on Console (interactive Python interpreter).stuff = input()# Type something and press Return/Enter on Console # before running print(stuff)print(stuff)
while
Cancel with break
While
loop is used to execute a block of code repeatedly until given boolean condition evaluated to False
. while True
loop will run forever unless we write it with a break
statement.break
statement. while True: stuff = input("String to capitalize [type q to quit]: ") if stuff == "q": break print(stuff.capitalize())
while
Skip Ahead with continue
Sometimes, we don’t want to break out of a loop but just want to skip ahead to the next iteration for some reason.
The continue
statement is used to skip the rest of the code inside a loop for the current iteration only.
while True: value = input("Integer, please [q to quit]: ") if value == 'q': # quit break number = int(value) if number % 2 == 0: # an even number continue print(number, "squared is", number*number)
while
Check break
Use with else
while
with else
when we’ve coded a while
loop to check for something, and break
ing as soon as it’s found.
numbers = [1, 3, 5]position = 0while position < len(numbers): number = numbers[position] if number % 2 == 0: print('Found even number', number) break position += 1else: # break not called print('No even number found')
while
and for
Iterate with for
and in
Sometimes we want to loop through a set of things such as a string of text, a list of words or a list of numbers.
When we have a list of things to loop through, we can construct a for
loop.
A for
loop makes it possible for us to traverse data structures without knowing how large they are or how they are implemented.
while
and for
Iterate with for
and in
word = 'thud'offset = 0while offset < len(word): print(word[offset]) offset += 1
word = 'thud'for letter in word: print(letter)
for
and in
Cancel with break
break
in a for
loop breaks out of the loop, as it does for a while
loop:word = 'thud'for letter in word: if letter == 'u': break print(letter)
Skip with continue
continue
in a for
loop jumps to the next iteration of the loop, as it does
for a while
loop.word = 'thud'for letter in word: if letter == 'u': continue print(letter)
for
and in
Check break
Use with else
Similar to while
, for
has an optional else
that checks whether the for
completed
normally. If break
was not called, the else
statement is run.
for
loop ran to completion instead of being stopped early with a break
:word = 'thud'for letter in word: if letter == 'x': print("Eek! An 'x'!") break print(letter)else: print("No 'x' in there.")
for
and in
Generate Number Sequences with range()
The range()
function returns a stream of numbers within a specified range, without
first having to create and store a large data structure such as a list or tuple.
This lets us create huge ranges without using all the memory in our computers and crashing our program.
range()
returns an iterable object, so we need to step through the values with for
... in
, or convert the object to a sequence like a list.
range()
similar to how we use slices: range( start, stop, step )
. start
, the range
begins at 0. stop
; as with slices, the last value created will be just before stop. step
is 1, but we can change it.for x in range(0, 3): print(x)list( range(0, 3) )
for x in range(2, -1, -1): print(x)list( range(2, -1, -1) )
for x in range(0, 11, 2): print(x)list( range(0, 11, 2) )
while
and for
Class Exercises
Use a while
loop to print the values of the list [3, 2, 1, 0].
Assign the value 7 to the variable guess_me
, and the value 1 to the variable number
. Write a while
loop that compares number
with guess_me.
Print 'too low' if number
is less than guess me. If number
equals guess_me
, print 'found it!' and then exit the loop. If number
is greater than guess_me
, print 'oops' and then exit the loop. Increment number
at the end of the loop.
Use a for
loop to print the values of the list [3, 2, 1, 0].
Assign the value 5 to the variable guess_me.
Use a for
loop to iterate a variable called number
over range(10)
. If number
is less than guess_me
, print 'too low'. If number
equals guess_me
, print 'found it!' and then break
out of the for
loop. If number
is greater than guess_me
, print 'oops' and then exit the loop.
In the previous classes, we started with some of Python’s basic data types: booleans, integers, floats, and strings.
Why does Python contain both lists and tuples?
Tuples are immutable; when we assign elements (only once) to a tuple, they’re baked in the cake and can’t be changed.
Lists are mutable, meaning we can insert and delete elements with great enthusiasm.
Create with Commas and ()
empty_tuple = ()
one_geneseo = 'Geneseo',
one_geneseo = ('Geneseo',)
one_geneseo = ('Geneseo')
suny_tuple = 'Geneseo', 'Borckport', 'Oswego'
suny_tuple = ('Geneseo', 'Borckport', 'Oswego')
one_geneseo = 'Geneseo',type(one_geneseo)type('Groucho',)type(('Groucho',))
suny_tuple = ('Geneseo', 'Borckport', 'Oswego')a, b, c = suny_tupleabc
password = 'swordfish'icecream = 'tuttifrutti'password, icecream = icecream, passwordpasswordicecream
tuple()
suny_list = ['Geneseo', 'Borckport', 'Oswego']tuple = tuple(suny_list)
+
('Geneseo',) + ('Borckport', 'Oswego')
*
+
:('yada',) * 3
a = (7, 2)b = (7, 2, 9)a == ba <= ba < b
for
and in
words = ('fresh','out', 'of', 'ideas')for word in words: print(word)
t1 = ('Fee', 'Fie', 'Foe')id(t1)t2 = ('Flop',)t1 + t2t1 += t2id(t1)
Lists are good for keeping track of things by their order, especially when the order and contents might change.
Lists are mutable---we can change a list in place, add new elements, and delete or replace existing elements.
The same value can occur more than once in a list.
Create with []
empty_list = [ ]weekdays = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']big_birds = ['emu', 'ostrich', 'cassowary']first_names = ['Mary', 'Susan', 'Nicholas', 'Nicholas', 'Michael']leap_years = [2012, 2016, 2020]
list()
We can also make an empty list with the list()
function.
list()
function also converts other iterable data types (such as tuples, strings, sets, and dictionaries) to lists.
another_empty_list = list()another_empty_listlist('cat')a_tuple = ('ready', 'fire', 'aim')list(a_tuple)
split()
split()
to chop a string into a list by some separator:coffee_day = '10/1/2022'coffee_day.split('/')splitme = 'a/b//c/d///e'splitme.split('/')splitme.split('//')
[offset]
suny = ['Geneseo', 'Brockport', 'Oswego']
suny[0]suny[1]suny[2]suny[5]
suny[-1]suny[-2]suny[-3]suny[-5]
suny = ['Geneseo', 'Brockport', 'Oswego']suny[0:2] # A slice of a list is also a list.
suny[::2]suny[::-2]suny[::-1]
suny[4:]suny[-6:]suny[-6:-2]suny[-6:-4]
reverse()
list.reverse()
:suny.reverse()suny
append()
append()
function adds items to the end of the list.suny = ['Geneseo', 'Brockport', 'Oswego']suny.append('Buffalo')sunysuny = ['Geneseo', 'Brockport', 'Oswego']others = ['Buffalo', 'Cortland']suny.append(others)suny
insert()
insert()
.suny = ['Geneseo', 'Brockport', 'Oswego']suny.insert(2, 'Buffalo')sunysuny.insert(10, 'Cortland')suny
*
. The same works for a list:["blah"] * 3suny = ['Geneseo', 'Brockport', 'Oswego']suny * 2
extend()
or +
extend()
or +
.suny = ['Geneseo', 'Brockport', 'Oswego']others = ['Buffalo', 'Cortland']suny.extend(others)sunysuny = ['Geneseo', 'Brockport', 'Oswego']others = ['Buffalo', 'Cortland']suny += otherssuny
[offset]
suny = ['Geneseo', 'Brockport', 'Oswego']suny[2] = 'Buffalo'suny
numbers = [1, 2, 3, 4]numbers[1:3] = ['eight', 'nine']numbers
numbers = [1, 2, 3, 4]numbers[1:3] = [7, 8, 9]numbers
del
del
statement to delete an item by its position in a list.suny = ['Geneseo', 'Brockport', 'Oswego', 'Rochester']suny[-1]del suny[-1] suny
remove()
remove()
to delete it by value.suny = ['Geneseo', 'Brockport', 'Oswego', 'Rochester']suny.remove('Rochester')sunysuny = ['Geneseo', 'Brockport', 'Oswego', 'Rochester', 'Rochester']suny.remove('Rochester')suny
pop()
pop()
.pop()
with an offset, it will return the item at that offset; with no argument, it uses -1.suny = ['Geneseo', 'Brockport', 'Oswego', 'Rochester']suny.pop()sunysuny.pop(1)suny
clear()
clear()
to clear a list of all its elements:suny_roc = ['Rochester', 'Rochester', 'Rochester', 'Rochester']suny.clear()suny
index()
index()
:suny = ['Geneseo', 'Brockport', 'Oswego', 'Buffalo']suny.index('Geneseo')suny = ['Geneseo', 'Brockport', 'Oswego', 'Geneseo']suny.index('Geneseo')
in
in
:suny = ['Geneseo', 'Brockport', 'Oswego', 'Buffalo']'Geneseo' in suny'Rochester' in sunywords = ['a', 'deer', 'a' 'male', 'deer']'deer' in words
count()
count()
:suny = ['Geneseo', 'Brockport', 'Oswego', 'Buffalo']suny.count('Geneseo')suny.count('Rochester')mcdonald = ['cheeseburger', 'cheeseburger', 'cheeseburger']mcdonald.count('cheeseburger')
join()
join()
is a string method, not a list method.suny = ['Geneseo', 'Brockport', 'Oswego', 'Buffalo']', '.join(suny)
suny.join(', ')
.join()
is a string or any iterable sequence of strings (including a list), and its output is a string.sort()
or sorted()
sort()
sorts the list itself, in place.sorted()
returns a sorted copy of the list.suny = ['Geneseo', 'Brockport', 'Oswego']sorted_suny = sorted(suny)sorted_sunysuny
suny.sort()suny
sort()
or sorted()
reverse=True
to set it to descending.numbers = [2, 1, 4.0, 3]numbers.sort()numbersnumbers = [2, 1, 4.0, 3]numbers.sort(reverse=True)numbers
suny = ['Geneseo', 'Brockport', 'Oswego']sorted_suny = sorted(suny, reverse=True)sorted_suny
len()
len()
returns the number of items in a list:suny = ['Geneseo', 'Brockport', 'Oswego']len(suny)
=
a = [1, 2, 3]b = aba[0] = 'suprise'a
b
now?b[0] = 'I hate suprises'b
a
now?We can copy the values of a list to an independent, fresh list by using (1) the list copy()
method, (2) the list()
conversion function, or (3) the list slice [:]
:
a = [1, 2, 3]b = a.copy()c = list(a)d = a[:]a[0] = 'integer lists'
b
, c
, and d
are copies of a
: a
refers.b
, c
, and d
now?copy()
method, (2) the list()
conversion function, or (3) the list slice [:]
works well if the list values are all immutable.a = [1, 2, [8, 9]]b = a.copy()c = list(a)d = a[:]a[2][1] = 10
b
, c
, and d
are copies of a
.The value of a[2]
is now a list, and its elements can be changed.
b
, c
, and d
now?deepcopy()
function:import copya = [1, 2, [8, 9]]b = copy.deepcopy(a)a[2][1] = 10ab
deepcopy()
can handle deeply nested lists, dictionaries, and other objects.
We'll discuss more about import
soon.
==
, <
, and so on.a = [7, 2]b = [7, 2, 9]a == ba <= ba < b
a
is shorter than list b
, and all of its elements are equal, a
is less than b
. Iterate with for
and in
for
loop is quite common to iterate over lists.cheeses = ['brie', 'gjetost', 'havarti']for cheese in cheeses: print(cheese)
break
ends the for loop and continue
steps to the next iteration:cheeses = ['brie', 'gjetost', 'havarti']for cheese in cheeses: if cheese.startswith('g'): print("I won't eat anything that starts with 'g'") break else: print(cheese)
else
if the for completed without a break
:cheeses = ['brie', 'gjetost', 'havarti']for cheese in cheeses: if cheese.startswith('x'): print("I won't eat anything that starts with 'x'") break else: print(cheese)else: print("Didn't find anything that started with 'x'")
for
never ran, control goes to the else
:cheeses = []for cheese in cheeses: print('This shop has some lovely', cheese) breakelse: # no break means no cheese print('This is not much of a cheese shop, is it?')
Iterate Multiple Sequences with zip()
zip()
function.days = ['Monday', 'Tuesday', 'Wednesday']fruits = ['banana', 'orange', 'peach']drinks = ['coffee', 'coffee', 'coffee']desserts = ['tiramisu', 'ice cream', 'pie', 'pudding']for day, fruit, drink, dessert in zip(days, fruits, drinks, desserts): print(day, ": drink", drink, "- eat", fruit, "- enjoy", dessert)
zip()
to walk through multiple sequences and make tuples from items at the same offsets.english = 'Monday', 'Tuesday', 'Wednesday'french = 'Lundi', 'Mardi', 'Mercredi'list( zip(english, french) )dict( zip(english, french) )
dict()
function can create dictionaries from two-item sequences like tuples, lists, or strings.Create a List with a Comprehension
Here, we look at how to create a list with a list comprehension, which incorporates the for
/in
iteration that we just saw.
number_list = []number_list.append(1)number_list.append(2)number_list.append(3)number_list.append(4)number_list.append(5)
number_list = []for number in range(1, 6): number_list.append(number)number_list
number_list = list(range(1, 6))number_list
number_list = [number for number in range(1,6)]number_list
Create a List with a Comprehension
number_list = [number for number in range(1,6)]number_list
In the first line, we need the first number
variable to produce values for the list: that is, to put a result of the loop into number_list
.
The second number
is part of the for loop.
number
in example 1 is an expression, try this variant:number_list = [number - 1 for number in range(1,6)]number_list
a_list = [number for number in range(1,6) if number % 2 == 1]
a_list = []for number in range(1,6): if number % 2 == 1: a_list.append(number)
Create a List with a Comprehension
for ...
clauses in the corresponding comprehension.rows = range(1,4)cols = range(1,3)for row in rows: for col in cols: print(row, col)
rows = range(1,4)cols = range(1,3)cells = [(row, col) for row in rows for col in cols]for cell in cells: print(cell)
rows = range(1,4)cols = range(1,3)cells = [(row, col) for row in rows for col in cols]for row, col in cells: print(row, col)
Lists of Lists
small_birds = ['hummingbird', 'finch']extinct_birds = ['dodo', 'passenger pigeon', 'Norwegian Blue']carol_birds = [3, 'French hens', 2, 'turtledoves']all_birds = [small_birds, extinct_birds, 'macaw', carol_birds]
all_birds
, a list of lists, look like?all_birdsall_birds[0]all_birds[1]all_birds[1][0] # [0] refers to the first item in that inner list.
Tuples Versus Lists
append()
, insert()
, and so on—because they can’t be modified after creation.There Are No Tuple Comprehensions
number_thing = (number for number in range(1, 6))type(number_thing)
Class Exercises 1
Create a list called years_list
, starting with the year of your birth, and each year thereafter until the year of your fifth birthday. For example, if you were born in 2003, the list would be years_list = [2003, 2004, 2005, 2006, 2007, 2008].
In which of these years was your third birthday? Remember, you were 0 years of age for your first year.
In which year in years_list
were you the oldest?
Class Exercises 2
Make a list called things
with these three strings as elements: "mozzarella"
, "cinderella"
, "salmonella"
.
Capitalize the element in things
that refers to a person and then print the list. Did it change the element in the list?
Make the cheesy element of things
all uppercase and then print the list.
Delete the disease element of things
, and then print the list.
Class Exercises 3
Create a list called surprise
with the elements "Groucho"
, "Chico"
, and "Harpo"
.
Lowercase the last element of the surprise
list, reverse it, and then capitalize it.
Class Exercises 4
even
of the even numbers in range(10)
.Tutoring/TA-ing at Data Analytics Lab (South 321)
Keyboard shortcuts
↑, ←, Pg Up, k | Go to previous slide |
↓, →, Pg Dn, Space, j | Go to next slide |
Home | Go to first slide |
End | Go to last slide |
Number + Return | Go to specific slide |
b / m / f | Toggle blackout / mirrored / fullscreen mode |
c | Clone slideshow |
p | Toggle presenter mode |
t | Restart the presentation timer |
?, h | Toggle this help |
o | Tile View: Overview of Slides |
Esc | Back to slideshow |
Tutoring/TA-ing at Data Analytics Lab (South 321)
Tutoring/TA-ing at Data Analytics Lab (South 321)
Student Ambassador Program
More information about the program is available at:
input()
function does not work well with your Spyder IDE from Anaconda Distribution, install the Spyder IDE in addition to Anaconda.Shortcuts
F9 runs a current line (where the blinking cursor bar is) or selected lines.
Home/End moves the blinking cursor bar to the beginning/end of the line.
PgUp/PgDn moves the blinking cursor bar to the top/bottom line of the script on the screen.
Shortcuts
Mac
#
.Windows
#
.# %%
defines a coding block in Spyder IDE.More Shortcuts
while
and for
while
and for
while
and for
. Repeat with while
count = 1 while count <= 5: print(count) count += 1
count
.while
loop compared the value of count
to 5 and continued if count
was less than or equal to 5.count
and then incremented its value by one with the statement count += 1
.count
with 5.count
is now 2, so the contents of the while
loop are again executed, and count
is incremented to 3.count
is incremented from 5 to 6 at the bottom of the loop.count <= 5
is now False
, and the while
loop ends.while
Asking the user for input
input()
function gets input from the keyboard.input()
is called, the program stops and waits for the user to type something on Console (interactive Python interpreter).stuff = input()# Type something and press Return/Enter on Console # before running print(stuff)print(stuff)
while
Cancel with break
While
loop is used to execute a block of code repeatedly until given boolean condition evaluated to False
. while True
loop will run forever unless we write it with a break
statement.break
statement. while True: stuff = input("String to capitalize [type q to quit]: ") if stuff == "q": break print(stuff.capitalize())
while
Skip Ahead with continue
Sometimes, we don’t want to break out of a loop but just want to skip ahead to the next iteration for some reason.
The continue
statement is used to skip the rest of the code inside a loop for the current iteration only.
while True: value = input("Integer, please [q to quit]: ") if value == 'q': # quit break number = int(value) if number % 2 == 0: # an even number continue print(number, "squared is", number*number)
while
Check break
Use with else
while
with else
when we’ve coded a while
loop to check for something, and break
ing as soon as it’s found.
numbers = [1, 3, 5]position = 0while position < len(numbers): number = numbers[position] if number % 2 == 0: print('Found even number', number) break position += 1else: # break not called print('No even number found')
while
and for
Iterate with for
and in
Sometimes we want to loop through a set of things such as a string of text, a list of words or a list of numbers.
When we have a list of things to loop through, we can construct a for
loop.
A for
loop makes it possible for us to traverse data structures without knowing how large they are or how they are implemented.
while
and for
Iterate with for
and in
word = 'thud'offset = 0while offset < len(word): print(word[offset]) offset += 1
word = 'thud'for letter in word: print(letter)
for
and in
Cancel with break
break
in a for
loop breaks out of the loop, as it does for a while
loop:word = 'thud'for letter in word: if letter == 'u': break print(letter)
Skip with continue
continue
in a for
loop jumps to the next iteration of the loop, as it does
for a while
loop.word = 'thud'for letter in word: if letter == 'u': continue print(letter)
for
and in
Check break
Use with else
Similar to while
, for
has an optional else
that checks whether the for
completed
normally. If break
was not called, the else
statement is run.
for
loop ran to completion instead of being stopped early with a break
:word = 'thud'for letter in word: if letter == 'x': print("Eek! An 'x'!") break print(letter)else: print("No 'x' in there.")
for
and in
Generate Number Sequences with range()
The range()
function returns a stream of numbers within a specified range, without
first having to create and store a large data structure such as a list or tuple.
This lets us create huge ranges without using all the memory in our computers and crashing our program.
range()
returns an iterable object, so we need to step through the values with for
... in
, or convert the object to a sequence like a list.
range()
similar to how we use slices: range( start, stop, step )
. start
, the range
begins at 0. stop
; as with slices, the last value created will be just before stop. step
is 1, but we can change it.for x in range(0, 3): print(x)list( range(0, 3) )
for x in range(2, -1, -1): print(x)list( range(2, -1, -1) )
for x in range(0, 11, 2): print(x)list( range(0, 11, 2) )
while
and for
Class Exercises
Use a while
loop to print the values of the list [3, 2, 1, 0].
Assign the value 7 to the variable guess_me
, and the value 1 to the variable number
. Write a while
loop that compares number
with guess_me.
Print 'too low' if number
is less than guess me. If number
equals guess_me
, print 'found it!' and then exit the loop. If number
is greater than guess_me
, print 'oops' and then exit the loop. Increment number
at the end of the loop.
Use a for
loop to print the values of the list [3, 2, 1, 0].
Assign the value 5 to the variable guess_me.
Use a for
loop to iterate a variable called number
over range(10)
. If number
is less than guess_me
, print 'too low'. If number
equals guess_me
, print 'found it!' and then break
out of the for
loop. If number
is greater than guess_me
, print 'oops' and then exit the loop.
In the previous classes, we started with some of Python’s basic data types: booleans, integers, floats, and strings.
Why does Python contain both lists and tuples?
Tuples are immutable; when we assign elements (only once) to a tuple, they’re baked in the cake and can’t be changed.
Lists are mutable, meaning we can insert and delete elements with great enthusiasm.
Create with Commas and ()
empty_tuple = ()
one_geneseo = 'Geneseo',
one_geneseo = ('Geneseo',)
one_geneseo = ('Geneseo')
suny_tuple = 'Geneseo', 'Borckport', 'Oswego'
suny_tuple = ('Geneseo', 'Borckport', 'Oswego')
one_geneseo = 'Geneseo',type(one_geneseo)type('Groucho',)type(('Groucho',))
suny_tuple = ('Geneseo', 'Borckport', 'Oswego')a, b, c = suny_tupleabc
password = 'swordfish'icecream = 'tuttifrutti'password, icecream = icecream, passwordpasswordicecream
tuple()
suny_list = ['Geneseo', 'Borckport', 'Oswego']tuple = tuple(suny_list)
+
('Geneseo',) + ('Borckport', 'Oswego')
*
+
:('yada',) * 3
a = (7, 2)b = (7, 2, 9)a == ba <= ba < b
for
and in
words = ('fresh','out', 'of', 'ideas')for word in words: print(word)
t1 = ('Fee', 'Fie', 'Foe')id(t1)t2 = ('Flop',)t1 + t2t1 += t2id(t1)
Lists are good for keeping track of things by their order, especially when the order and contents might change.
Lists are mutable---we can change a list in place, add new elements, and delete or replace existing elements.
The same value can occur more than once in a list.
Create with []
empty_list = [ ]weekdays = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']big_birds = ['emu', 'ostrich', 'cassowary']first_names = ['Mary', 'Susan', 'Nicholas', 'Nicholas', 'Michael']leap_years = [2012, 2016, 2020]
list()
We can also make an empty list with the list()
function.
list()
function also converts other iterable data types (such as tuples, strings, sets, and dictionaries) to lists.
another_empty_list = list()another_empty_listlist('cat')a_tuple = ('ready', 'fire', 'aim')list(a_tuple)
split()
split()
to chop a string into a list by some separator:coffee_day = '10/1/2022'coffee_day.split('/')splitme = 'a/b//c/d///e'splitme.split('/')splitme.split('//')
[offset]
suny = ['Geneseo', 'Brockport', 'Oswego']
suny[0]suny[1]suny[2]suny[5]
suny[-1]suny[-2]suny[-3]suny[-5]
suny = ['Geneseo', 'Brockport', 'Oswego']suny[0:2] # A slice of a list is also a list.
suny[::2]suny[::-2]suny[::-1]
suny[4:]suny[-6:]suny[-6:-2]suny[-6:-4]
reverse()
list.reverse()
:suny.reverse()suny
append()
append()
function adds items to the end of the list.suny = ['Geneseo', 'Brockport', 'Oswego']suny.append('Buffalo')sunysuny = ['Geneseo', 'Brockport', 'Oswego']others = ['Buffalo', 'Cortland']suny.append(others)suny
insert()
insert()
.suny = ['Geneseo', 'Brockport', 'Oswego']suny.insert(2, 'Buffalo')sunysuny.insert(10, 'Cortland')suny
*
. The same works for a list:["blah"] * 3suny = ['Geneseo', 'Brockport', 'Oswego']suny * 2
extend()
or +
extend()
or +
.suny = ['Geneseo', 'Brockport', 'Oswego']others = ['Buffalo', 'Cortland']suny.extend(others)sunysuny = ['Geneseo', 'Brockport', 'Oswego']others = ['Buffalo', 'Cortland']suny += otherssuny
[offset]
suny = ['Geneseo', 'Brockport', 'Oswego']suny[2] = 'Buffalo'suny
numbers = [1, 2, 3, 4]numbers[1:3] = ['eight', 'nine']numbers
numbers = [1, 2, 3, 4]numbers[1:3] = [7, 8, 9]numbers
del
del
statement to delete an item by its position in a list.suny = ['Geneseo', 'Brockport', 'Oswego', 'Rochester']suny[-1]del suny[-1] suny
remove()
remove()
to delete it by value.suny = ['Geneseo', 'Brockport', 'Oswego', 'Rochester']suny.remove('Rochester')sunysuny = ['Geneseo', 'Brockport', 'Oswego', 'Rochester', 'Rochester']suny.remove('Rochester')suny
pop()
pop()
.pop()
with an offset, it will return the item at that offset; with no argument, it uses -1.suny = ['Geneseo', 'Brockport', 'Oswego', 'Rochester']suny.pop()sunysuny.pop(1)suny
clear()
clear()
to clear a list of all its elements:suny_roc = ['Rochester', 'Rochester', 'Rochester', 'Rochester']suny.clear()suny
index()
index()
:suny = ['Geneseo', 'Brockport', 'Oswego', 'Buffalo']suny.index('Geneseo')suny = ['Geneseo', 'Brockport', 'Oswego', 'Geneseo']suny.index('Geneseo')
in
in
:suny = ['Geneseo', 'Brockport', 'Oswego', 'Buffalo']'Geneseo' in suny'Rochester' in sunywords = ['a', 'deer', 'a' 'male', 'deer']'deer' in words
count()
count()
:suny = ['Geneseo', 'Brockport', 'Oswego', 'Buffalo']suny.count('Geneseo')suny.count('Rochester')mcdonald = ['cheeseburger', 'cheeseburger', 'cheeseburger']mcdonald.count('cheeseburger')
join()
join()
is a string method, not a list method.suny = ['Geneseo', 'Brockport', 'Oswego', 'Buffalo']', '.join(suny)
suny.join(', ')
.join()
is a string or any iterable sequence of strings (including a list), and its output is a string.sort()
or sorted()
sort()
sorts the list itself, in place.sorted()
returns a sorted copy of the list.suny = ['Geneseo', 'Brockport', 'Oswego']sorted_suny = sorted(suny)sorted_sunysuny
suny.sort()suny
sort()
or sorted()
reverse=True
to set it to descending.numbers = [2, 1, 4.0, 3]numbers.sort()numbersnumbers = [2, 1, 4.0, 3]numbers.sort(reverse=True)numbers
suny = ['Geneseo', 'Brockport', 'Oswego']sorted_suny = sorted(suny, reverse=True)sorted_suny
len()
len()
returns the number of items in a list:suny = ['Geneseo', 'Brockport', 'Oswego']len(suny)
=
a = [1, 2, 3]b = aba[0] = 'suprise'a
b
now?b[0] = 'I hate suprises'b
a
now?We can copy the values of a list to an independent, fresh list by using (1) the list copy()
method, (2) the list()
conversion function, or (3) the list slice [:]
:
a = [1, 2, 3]b = a.copy()c = list(a)d = a[:]a[0] = 'integer lists'
b
, c
, and d
are copies of a
: a
refers.b
, c
, and d
now?copy()
method, (2) the list()
conversion function, or (3) the list slice [:]
works well if the list values are all immutable.a = [1, 2, [8, 9]]b = a.copy()c = list(a)d = a[:]a[2][1] = 10
b
, c
, and d
are copies of a
.The value of a[2]
is now a list, and its elements can be changed.
b
, c
, and d
now?deepcopy()
function:import copya = [1, 2, [8, 9]]b = copy.deepcopy(a)a[2][1] = 10ab
deepcopy()
can handle deeply nested lists, dictionaries, and other objects.
We'll discuss more about import
soon.
==
, <
, and so on.a = [7, 2]b = [7, 2, 9]a == ba <= ba < b
a
is shorter than list b
, and all of its elements are equal, a
is less than b
. Iterate with for
and in
for
loop is quite common to iterate over lists.cheeses = ['brie', 'gjetost', 'havarti']for cheese in cheeses: print(cheese)
break
ends the for loop and continue
steps to the next iteration:cheeses = ['brie', 'gjetost', 'havarti']for cheese in cheeses: if cheese.startswith('g'): print("I won't eat anything that starts with 'g'") break else: print(cheese)
else
if the for completed without a break
:cheeses = ['brie', 'gjetost', 'havarti']for cheese in cheeses: if cheese.startswith('x'): print("I won't eat anything that starts with 'x'") break else: print(cheese)else: print("Didn't find anything that started with 'x'")
for
never ran, control goes to the else
:cheeses = []for cheese in cheeses: print('This shop has some lovely', cheese) breakelse: # no break means no cheese print('This is not much of a cheese shop, is it?')
Iterate Multiple Sequences with zip()
zip()
function.days = ['Monday', 'Tuesday', 'Wednesday']fruits = ['banana', 'orange', 'peach']drinks = ['coffee', 'coffee', 'coffee']desserts = ['tiramisu', 'ice cream', 'pie', 'pudding']for day, fruit, drink, dessert in zip(days, fruits, drinks, desserts): print(day, ": drink", drink, "- eat", fruit, "- enjoy", dessert)
zip()
to walk through multiple sequences and make tuples from items at the same offsets.english = 'Monday', 'Tuesday', 'Wednesday'french = 'Lundi', 'Mardi', 'Mercredi'list( zip(english, french) )dict( zip(english, french) )
dict()
function can create dictionaries from two-item sequences like tuples, lists, or strings.Create a List with a Comprehension
Here, we look at how to create a list with a list comprehension, which incorporates the for
/in
iteration that we just saw.
number_list = []number_list.append(1)number_list.append(2)number_list.append(3)number_list.append(4)number_list.append(5)
number_list = []for number in range(1, 6): number_list.append(number)number_list
number_list = list(range(1, 6))number_list
number_list = [number for number in range(1,6)]number_list
Create a List with a Comprehension
number_list = [number for number in range(1,6)]number_list
In the first line, we need the first number
variable to produce values for the list: that is, to put a result of the loop into number_list
.
The second number
is part of the for loop.
number
in example 1 is an expression, try this variant:number_list = [number - 1 for number in range(1,6)]number_list
a_list = [number for number in range(1,6) if number % 2 == 1]
a_list = []for number in range(1,6): if number % 2 == 1: a_list.append(number)
Create a List with a Comprehension
for ...
clauses in the corresponding comprehension.rows = range(1,4)cols = range(1,3)for row in rows: for col in cols: print(row, col)
rows = range(1,4)cols = range(1,3)cells = [(row, col) for row in rows for col in cols]for cell in cells: print(cell)
rows = range(1,4)cols = range(1,3)cells = [(row, col) for row in rows for col in cols]for row, col in cells: print(row, col)
Lists of Lists
small_birds = ['hummingbird', 'finch']extinct_birds = ['dodo', 'passenger pigeon', 'Norwegian Blue']carol_birds = [3, 'French hens', 2, 'turtledoves']all_birds = [small_birds, extinct_birds, 'macaw', carol_birds]
all_birds
, a list of lists, look like?all_birdsall_birds[0]all_birds[1]all_birds[1][0] # [0] refers to the first item in that inner list.
Tuples Versus Lists
append()
, insert()
, and so on—because they can’t be modified after creation.There Are No Tuple Comprehensions
number_thing = (number for number in range(1, 6))type(number_thing)
Class Exercises 1
Create a list called years_list
, starting with the year of your birth, and each year thereafter until the year of your fifth birthday. For example, if you were born in 2003, the list would be years_list = [2003, 2004, 2005, 2006, 2007, 2008].
In which of these years was your third birthday? Remember, you were 0 years of age for your first year.
In which year in years_list
were you the oldest?
Class Exercises 2
Make a list called things
with these three strings as elements: "mozzarella"
, "cinderella"
, "salmonella"
.
Capitalize the element in things
that refers to a person and then print the list. Did it change the element in the list?
Make the cheesy element of things
all uppercase and then print the list.
Delete the disease element of things
, and then print the list.
Class Exercises 3
Create a list called surprise
with the elements "Groucho"
, "Chico"
, and "Harpo"
.
Lowercase the last element of the surprise
list, reverse it, and then capitalize it.
Class Exercises 4
even
of the even numbers in range(10)
.