| Windows | Python 2.6 |
numpy scipy matplotlib |
| Python 2.7 |
numpy scipy matplotlib |
|
| Python 3.2 |
numpy scipy matplotlib |
|
| Python 3.3 |
numpy scipy matplotlib |
|
| Maс OS X 10.6 | Python 2.7 |
numpy scipy matplotlib |
Найдём множество идентификаторов всех школьников, которые есть в смене 2014.Август:
from Sis import *
students = set()
for entry in history():
if not (entry.student and entry.year == 2014 and entry.month == 8):
continue
students.add(entry.person)
print(students)
| Поле | Синоним | Примеры значений | Описание |
|---|---|---|---|
| session_id | session | 31 | Уникальный идентификатор смены (число от 1 до 31) |
| session_year | year | 2014 | Год смены |
| session_month | month | 8 | Месяц смены |
| group_full | 'C3.py' | Полное название группы | |
| parallel | 'C.py' | Название параллели | |
| group | 3 | Номер группы | |
| job_id | job | 20 | Номер профессии (для администрации) |
| person_id | person | 793 | Уникальный идентификатор человека |
| grade | 10, None | Класс школьника | |
| student | True | Является ли человек школьником | |
| prep | False | Является ли человек преподавателем в какой-либо параллели | |
| level | 6, None | Уровень — число, зависящее от параллели: от 0 для младших параллелей до 10 для преподавателей. Если уровень неизвестен (например, для администрации), возвращается None | |
| winter | False | Является ли смена зимней | |
| parallel_short | 'C' | Короткое название параллели (T, W, K, S, P, A0, A, A', B, B', C, C', D, E, F или M) |
| Название | Описание |
|---|---|
| parallels | Список коротких названий параллелей |
| parallel_colors | Словарь, сопоставляющий короткому названию параллели цвет, где цвет — список из трёх чисел от 0 до 1 |
| parallel_levels | Словарь, сопоставляющий короткому названию параллели уровень |
| grade_colors | Словарь, сопоставляющий классу школьника цвет |
| level_formatter | Форматтер, сопоставляющий уровню параллель |
| summer_session_formatter | Форматтер, сопоставляющий номеру летней смены её название |
Бывает нужно создать словарь, который бы считал, что всем ключам по умолчанию соответствует некоторое конкретное значение, например, 0 или []. Здесь придёт на помощь класс defaultdict из модуля collections. Например, так можно узнать, сколько в списке a цифр 1, 5 и 7.
from collections import defaultdict
d = defaultdict(int) # int() равно 0
a = [1, 1, 6, 1, 5, 9]
for x in a:
d[x] += 1 # не нужно проверять, есть ли x в a: если нет, к нулю (по умолчанию) прибавится 1
print(d[1], d[5], d[7]) # выведет "3 1 0"
Если нужно создать, например, словарь словарей списков, используется следующая конструкция:
d = defaultdict(lambda: defaultdict(list)) d['key1']['key2'].append(473) # никаких ошибок, теперь d['key1']['key2'] = [473]Здесь параметр, с которым создаётся
defaultdict, — это функция, возвращающая defaultdict(list), то есть словарь, у которого значение по умолчанию — пустой список. Это удобнее составного ключа d['key1', 'key2'] тем, что в нашем способе можно легко перебрать все 'key2', соответствующие ключу 'key1'.
for role, color, label in (('prep', 'g', 'Преподаватели'), ('student', 'b', 'Школьники')):
print('English name is {}, russian name is {}, color is {}'.format(role, label, color))
import matplotlib.pyplot as plt
plt.title('Название графика') # устанавливаем название
plt.grid() # добавляем сетку
n = 20
xs = [i / n for i in range(n + 1)]
for power, name, color in ((2, 'square', 'g'), (3, 'cube', 'b')): # рисуем x**2 и x**3
plt.plot(xs, [x ** power for x in xs], lw = 3, c = color, label = name)
plt.legend(loc = 'upper left') # разместить легенду в верхнем левом углу
plt.show() # показать график
plt.plot([2012, 2013, 2014], [300, 320, 354], lw = 3, c = 'green', label = 'Something')
| Аргумент | Именованный? | Примеры значений | Описание |
|---|---|---|---|
| x | нет | [2013, 2014] | Список x-координат |
| y | нет | [320, 354] | Список y-координат |
| lw | да | 3 | Толщина линии |
| c | да | 'g', 'green', (0.1, 0.9, 0.2) | Цвет линии |
| label | да | 'Title' | Название для легенды |
plt.stackplot([2012, 2013, 2014], [[1, 2, 3], [3, 2, 5], [4, 2, 1]], lw = 0, colors = ['r', 'g', 'b'])
| Аргумент | Именованный? | Примеры значений | Описание |
|---|---|---|---|
| x | нет | [2013, 2014] | Список x-координат (N элементов) |
| y | нет | [[1, 2], [3, 1], [4, 3]] | Двумерный список размера M×N: для каждого ряда данных список y-координат |
| lw | да | 0 | Толщина разделительных линий |
| colors | да | ['r', 'g', 'b'] | Цвета областей (список из M цветов) |