students = ['Alice', 'Bob', 'Claudia']
grades = [5, 3, 4]
Alice 5
Bob 3
Claudia 4
for student, grade in zip(students, grades):
print(student, grade)
Alice 5 Bob 3 Claudia 4
list(zip(students, grades))
[('Alice', 5), ('Bob', 3), ('Claudia', 4)]
s = """hello
world
"""
# multiline string
def elementwise_sum(u, v):
"""
u, v - two lists of numbers
returns list w
w[i] = u[i] + v[i] for all i
"""
# assert isinstance(u, list) and isinstance(v, list)
return [u_ + v_ for u_, v_ in zip(u, v)]
assert elementwise_sum([1, 2], [3, 4]) == [4, 6]
elementwise_sum([1, 2], [3, 4])
[4, 6]
elementwise_sum("Hello", "World")
['HW', 'eo', 'lr', 'll', 'od']
gradebook = {'Alice': 5, 'Bob': 3, 'Claudia': 5}
type(gradebook)
dict
gradebook['Bob']
3
gradebook['Claudia']
5
gradebook['Bob'] = 4
gradebook
{'Alice': 5, 'Bob': 4, 'Claudia': 5}
gradebook['Daniel']
--------------------------------------------------------------------------- KeyError Traceback (most recent call last) <ipython-input-20-4304a21bd337> in <module>() ----> 1 gradebook['Daniel'] KeyError: 'Daniel'
'Daniel' in gradebook
False
'Alice' in gradebook
True
gradebook.get('Alice')
5
gradebook.get('Daniel') is None
True
gradebook.get('Daniel', 0)
0
gradebook.get('Alice', 0)
5
gradebook
{'Alice': 5, 'Bob': 4, 'Claudia': 5}
for student in gradebook:
print(student)
Alice Bob Claudia
for student in gradebook:
print(student, gradebook[student])
Alice 5 Bob 4 Claudia 5
for student, grade in gradebook.items():
print(student, grade)
Alice 5 Bob 4 Claudia 5
gradebook.items()
dict_items([('Alice', 5), ('Bob', 4), ('Claudia', 5)])
sum(gradebook.values()) / len(gradebook)
4.666666666666667
gradebook.values()
dict_values([5, 4, 5])
gradebook.keys()
dict_keys(['Alice', 'Bob', 'Claudia'])
gradebook = {'Alice': [3, 4], 'Bob': [5], 'Claudia': [2, 4, 1]}
gradebook = [{'Alice': 4, 'Bob': 5},
{'Alice': 5, 'Claudia': 4}]
x = ['q']
x.append(x)
x
['q', [...]]
x[1]
['q', [...]]
x[1][1]
['q', [...]]
sum([None, 4, 3])
--------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-47-b9dbf7fee52a> in <module>() ----> 1 sum([None, 4, 3]) TypeError: unsupported operand type(s) for +: 'int' and 'NoneType'
my_dict = {'a': 5, 'b': 3}
dict.fromkeys(['1', '2', '3'], 987)
{'1': 987, '2': 987, '3': 987}
sums = {[2, 3]: 5, [1, 2]: 3}
--------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-51-400a52570e1e> in <module>() ----> 1 sums = {[2, 3]: 5, [1, 2]: 3} TypeError: unhashable type: 'list'
sums = {(2, 3): 5, (1, 2): 3}
sums[(2, 3)]
5
squares = {2: 4, 5: 25}
squares[2]
4
squares[0]
--------------------------------------------------------------------------- KeyError Traceback (most recent call last) <ipython-input-56-58a7a2576c1f> in <module>() ----> 1 squares[0] KeyError: 0
# gradebook = {'Alice': 4, 'Bob': 5, 'Claudia': 4, 'Elizabeth': 2}
# get list of students with grade > 2
def good_students(gradebook):
gs = []
for student, grade in gradebook.items():
if grade > 2:
gs.append(student)
return gs
# gradebook = {'Alice': 4, 'Bob': 5, 'Claudia': 4, 'Elizabeth': 2}
# get list of students with grade > 2
def good_students(gradebook):
return [student for student, grade in gradebook.items()
if grade > 2]
assert good_students({'Alice': 4,
'Bob': 5,
'Claudia': 4,
'Elizabeth': 2}) == ['Alice', 'Bob',
'Claudia']
[x ** 2 for x in range(100) if x % 4 == 0]
[0, 16, 64, 144, 256, 400, 576, 784, 1024, 1296, 1600, 1936, 2304, 2704, 3136, 3600, 4096, 4624, 5184, 5776, 6400, 7056, 7744, 8464, 9216]
squares = {x: x ** 2 for x in range(5)}
squares
{0: 0, 1: 1, 2: 4, 3: 9, 4: 16}
numbers = [5, 2, 12, 3]
numbers.sort()
numbers
[2, 3, 5, 12]
numbers = [5, 2, 12, 3]
numbers.sort(reverse=True)
numbers
[12, 5, 3, 2]
sorted([7, 4, 2, 8])
[2, 4, 7, 8]
numbers = [7, 4.6, 2, 8.1]
print(sorted(numbers))
print(numbers)
[2, 4.6, 7, 8.1] [7, 4.6, 2, 8.1]
"Hello" < "World"
True
"a" < "b"
True
"ab" < "ac"
True
"A" < "a"
True
ord("ё")
1105
ord("е")
1077
sorted(["Bob", "Alice", "Alla", "Bill"])
['Alice', 'Alla', 'Bill', 'Bob']
table = [[4, 5],
[6, 3],
[2, 5],
[6, 1]]
sorted(table)
[[2, 5], [4, 5], [6, 1], [6, 3]]
[1, 4] < [2, 0]
True
[1, 3] < [1, 2, 1]
False
def subs2(f):
return f(2)
def plusodin(x):
return x + 1
from math import log, sqrt
subs2(plusodin)
3
subs2(sqrt)
1.4142135623730951
sorted(["hello", 'this', 'world', 'is', 'the', 'best'],
key=len)
['is', 'the', 'this', 'best', 'hello', 'world']
sorted(["hello", 'best', 'this', 'world', 'is', 'the'],
key=len)
['is', 'the', 'best', 'this', 'hello', 'world']
table = [[4, 5],
[6, 3],
[2, 5],
[6, 1]]
# sort by second column
def my_sort_key(item):
print("my_sort_key invoked, item =", item)
return item[1]
sorted(table, key=my_sort_key)
my_sort_key invoked, item = [4, 5] my_sort_key invoked, item = [6, 3] my_sort_key invoked, item = [2, 5] my_sort_key invoked, item = [6, 1]
[[6, 1], [6, 3], [4, 5], [2, 5]]
sorted(table, key=lambda z: z[1])
[[6, 1], [6, 3], [4, 5], [2, 5]]
def foo(x):
return x ** 2
foo(3)
9
(lambda x: x ** 2)(10)
100
sorted([4, 6])
[4, 6]
num = [4, 6]
sorted(num)
[4, 6]
from operator import itemgetter
f = itemgetter(1)
f([6, 8, 10])
8
f = itemgetter(2)
f([6, 8, 10])
10
table = [[4, 5],
[6, 3],
[2, 5],
[6, 1]]
# sort by second column
def my_sort_key(item):
print("my_sort_key invoked, item =", item)
return (item[1], item[0], len(item))
sorted(table, key=my_sort_key)
my_sort_key invoked, item = [4, 5] my_sort_key invoked, item = [6, 3] my_sort_key invoked, item = [2, 5] my_sort_key invoked, item = [6, 1]
[[6, 1], [6, 3], [2, 5], [4, 5]]
sorted