Функции и множества
К прошлой лекции: оператор del
Множества
- Неиндексируемая последовательность
- все элементы не равны друг другу
- порядок элементов не определён
- Может состоять только из неизменяемых объектов
Поиск элемента в множестве имеет в среднем логарифмическую сложность (а не линейную, как в списке)
Поддерживаются теоретико-множественные операции, методы pop(), add() и т. п.
Функции
Пространства имён: повторение
Задание функции: формальные и фактические параметры, return
- Duck typing: функция как формализация алгоритма
вызов функции как локальное пространство имён
globals() и locals()
сложный случай определение локальности по связыванию, global
nonlocal для вложенных вызовов
- функция как объект: именование, передача в качестве параметра
- лямбда-функции (функции-выражения)
Распаковка и запаковка последовательностей
- при связывании
в цикле for
- при передаче параметров в функцию
- распаковка
- запаковка
- функция с произвольным числом параметров
- Параметры функции по умолчанию (именованные параметры)ё
Другие вычислимые последовательности
range(), reversed(), enumerate(), zip()
Д/З
Прочитать в tutorial про функции, множества и различные последовательности
EJudge: AplusB2 'Простая функция'
Написать функцию (см. правила оформления таких Д/З), которая принимает два параметра, допускающие сложение, а результат сложения — умножение на целое число. Функция должна возвращать удвоенную сумму своих параметров.
print(AplusB2("A","B"))
ABAB
EJudge: MoarTuple 'Подсчёт кратных'
Написать функцию moar(a, b, n) от трёх параметров — целочисленных последовательностей a и b, и натурального числа n. Функция возвращает True, если в a больше чисел, кратных n, чем в b, и False в противном случае.
print(moar((25,0,-115,976,100500,7),(32,5,78,98,10,9,42),5))
True
EJudge: MaxFun 'Функция побольше'
Написать функцию maxfun(), которая принимает переменное число параметров — числовуюпоследовательность S, функцию F1 и, возможно, ещё несколько функций F2 … Fn. Возвращает она ту из функций Fi, сумма значений которой на всех элементах S наибольшая. Если таких функций больше одной, возвращается Fi с наибольшим i.
from math import * print(maxfun(range(-2,10), sin, cos, exp)(1))
2.718281828459045
EJudge: MumboJumbo 'Мумбо-Юмбо'
Ввод представляет собой строки из букв латинского алфавита. Это иероглифические письмена на языках двух племён: Mumbo и Jumbo. Чётные строки — предложения одного языка, нечётные — другого (какого — неизвестно). Иероглифы Mumbo и Jumbo частично одинаковые, а частично разные. Предложения на каждом языке в данном корпусе текстов содержат все разрешённые в этом языке иероглифы (т. е. если иероглиф разрешён в языке, он встречается хотя бы в одном предложении на этом языке). Если строка пустая, это признак окончания ввода. Известно, что в уникальном алфавите Mumbo иероглифов больше, чем в уникальном алфавите Jumbo. Определить и вывести, на каком языке написано первое предложение — Mumbo или Jumbo.
wazxwjd tvnhuj kjdjdsaxz kunvhts azkxdz vunshtk zzjdsxa nunvhct cdzxaa vtkuhvhnc dazx tunncvwh dzjasxz uunvhts dxdwzaxa vuhvuntt dzxad vthnwuh
Jumbo