In [ ]:
%%html
<style>
.text_cell_render * {
font-family: OfficinaSansCTT;
}
.reveal code {
font-family: OfficinaSansCTT;
}
.text_cell_render h3 {
font-family: OfficinaSansCTT;
}
.reveal section img {
max-height: 500px;
margin-left: auto;
margin-right: auto;
}
img[alt=lexer] {
height: 300px;
}
</style>
In [ ]:
s = 'abc' # строка
s = "abc" # тоже строка
n = 2 # int
n = 3.5 # float
l = [] # пустой список
l = [1, 2, 3] # тоже список, но с числами
l = ['a', 1, None] # разные типы в одном списке
t = (1,) # кортеж с одним элементом (не забудьте про запятую!)
d = {} # пустой словарь
d = {'a': 1, 'b': 2} # словарь с парами ключ-значение
s = set([1, 2]) # множество, еще можно {1, 2}
In [ ]:
In [ ]:
l = [3,2,1]
In [ ]:
len(l) # посчитать длину списка или строки
In [ ]:
sum(l) # просуммировать элементы списка
In [ ]:
sorted(l) # вернуть отсортированный список, reverse=True для сортировки в обратном порядке
In [ ]:
max(l) # максимальный элемент; min(l) # минимальный
In [ ]:
l.append(9) # добавить элемент в конец
l.extend([3, 4, 5]) # расширить один список другим
l.insert(3, 4) # вставить элемент 4 в позицию 3
l.remove(3) # удалить первый элемент со значением 3
l.count(3) # посчитать число элементов со значением 3
In [ ]:
In [ ]:
# s - строка или список
s = "string"
s[0] # нулевой элемент (индексация с нуля)
s[2:4] # элементы 2 и 3
s[1:8:2] # элементы 1, 3, 5, 7 (шаг 2)
s[-1] # обратный индекс - последний элемент
s[::2] # все элементы с шагом 2
s[::-1] # развернутая строка/список
In [ ]:
In [ ]:
s.split("a") # разделяем строку по "a"
s.split("\t") # разделяем строку по табуляции
"\t".join(list_of_strings) # объединяем
In [ ]:
In [ ]:
s = "У Мэри есть овечка"
print(s[0] == ...)
print(s[7:10] == ...)
print(s[1:8:2] == ...)
print(s[-3] == ...)
print(s[::4] == ...)
print(s[::-1] == ...)
In [ ]:
In [ ]:
lst = [3,2,1]
for i in lst: # перебираем элементы в контейнере
print(i)
In [ ]:
for i, item in enumerate(lst): # перебираем вместе с индексами
print(str(i) + ". " + str(item))
In [ ]:
for j in range(1, 10, 2): # что напечатает?
print(j)
In [ ]:
a = 0
while a < 100: # проверка условия
a += 1 # инкремент (увеличение значения на 1)
print(a)
if a == 20:
break # выход из цикла
1) Для чисел от 0 до 100 вывести само число, а затем «fizz», если число делится на 3, и «buzz», если оно делится на 5. Подсказка: оператор взятия остатка - %
2) Даны два списка равной длины с целыми числами - например, время в секундах, проведенное на сайте, для каждого пользователя в группе A/B тестирования. Нужно найти разницу между максимальным элементом первого списка и минимальным элементом второго за один проход (O(n)).
In [ ]:
# сгенерировать список можно, например, так:
import random
a = [random.randint(-10, 10) for _ in range(10)]
b = [random.randint(-10, 10) for _ in range(10)]
mx = a[0]
mn = b[0]
In [ ]:
In [ ]:
s = {1, 2, 3}
s.add(6) # добавление элемента
s.remove(2) # удаление элемента
3 in s # проверка наличия элемента
4 not in s # проверка отсутствия элемента
In [ ]:
In [ ]:
s1, s2 = {1, 2, 3}, {2, 3}
s2.issubset(s1) # является ли s2 подсетом s1?
s1.issuperset(s2) # является ли s1 суперсетом над s2?
s1.union(s2) # объединить два множества в одно
s1.intersection(s2) # пересечение множеств
s1.difference(s2) # разность множеств
In [ ]:
# сокращенные версии (не рекомендуются к использованию)
s2 <= s1 # можно также s1<s2
s1 >= s2 # можно также s1>s2
s1 | s2
s1 & s2
s1 - s2
In [ ]:
In [ ]:
d = {"foo": 1, 42: "bar"}
d["a"] = 125 # добавить значение по ключу в словарь
del d["a"] # удалить значение по ключу из словаря
d.keys() # список ключей (в Python 3 - итератор)
d.values() # список значений (в Python 3 - итератор)
d.get(12, "freedom") # значение по умолчанию
d.update({42: "zord", "obama": "trump"}) # обновить значения из другого словаря
In [ ]:
In [ ]:
s = "ТеКсТ ДоМиКом"
print(s.lower()) # нижний регистр
print(s.upper()) # верхний регистр
In [ ]:
print("У Пети было {0} яблок".format(15))
print("Что лучше - {0} ящиков пива или {1} ящиков водки?".format(30, 20))
print("У Пети было {how_much} яблок".format(how_much="дофига"))
In [ ]:
"""
Взвесьте мне {0:.5f}
килограмм хурмы
""".format(21.35236172)
In [ ]:
# f-строки (Python 3.6+):
a = 2
b = 8
f"a + b = {a + b}"
In [ ]:
# старый формат: printf-нотация:
"Жили в квартире %d веселых чижа" % 44
1. Как можно в Python реализовать структуру "стек"?
2. Какой встроенной функцией можно сгенерировать убывающую/возрастающую последовательность чисел?
3. Что такое "динамическая типизация"?
4. Как сразу перескочить на следующую итерацию цикла, не выполняя текущую до конца?
5. Как получить сразу список пар ключ-значение из словаря?