Множества (set и frozenset)
Множество в python - "контейнер", содержащий не повторяющиеся элементы в случайном порядке. Создаём множества: >>> a = set()>>> aset()>>> a = set('hello')>>> a{'h', 'o', 'l', 'e'}>>> a = {'a', 'b', 'c', 'd'}>>> a{'b', 'c', 'a', 'd'}>>> a = {i ** 2 for i in range(10)} # генератор множеств>>> a{0, 1, 4, 81, 64, 9, 16, 49, 25, 36}>>> a = {} # А так нельзя!>>> type(a)<class 'dict'>Как видно из примера, множества имеет тот же литерал, что и словарь, но пустое множество с помощью литерала создать нельзя. Множества удобно использовать для удаления повторяющихся элементов: >>> words = ['hello', 'daddy', 'hello', 'mum']>>> set(words){'hello', 'daddy', 'mum'}С множествами можно выполнять множество операций: находить объединение, пересечение... · len(s) - число элементов в множестве (размер множества). · x in s - принадлежит ли x множеству s. · set.isdisjoint(other) - истина, если set и other не имеют общих элементов. · set == other - все элементы set принадлежат other, все элементы other принадлежат set. · set.issubset(other) или set <= other - все элементы set принадлежат other. · set.issuperset(other) или set >= other - аналогично. · set.union(other, ...) или set | other | ... - объединение нескольких множеств. · set.intersection(other, ...) или set & other & ... - пересечение. · set.difference(other, ...) или set - other - ... - множество из всех элементов set, не принадлежащие ни одному из other. · set.symmetric_difference(other); set ^ other - множество из элементов, встречающихся в одном множестве, но не встречающиеся в обоих. · set.copy() - копия множества. И операции, непосредственно изменяющие множество: · set.update(other, ...); set |= other | ... - объединение. · set.intersection_update(other, ...); set &= other & ... - пересечение. · set.difference_update(other, ...); set -= other | ... - вычитание. · set.symmetric_difference_update(other); set ^= other · set.add(elem) - добавляет элемент в множество. · set.remove(elem) - удаляет элемент из множества. KeyError, если такого элемента не существует. · set.discard(elem) - удаляет элемент, если он находится в множестве. · set.pop() - удаляет первый элемент из множества. Так как множества не упорядочены, нельзя точно сказать, какой элемент будет первым. · set.clear() - очистка множества.
Frozenset Единственное отличие set от frozenset заключается в том, что set - изменяемый тип данных, а frozenset - нет. Примерно похожая ситуация с списками и кортежами. >>> a = set('qwerty')>>> b = frozenset('qwerty')>>> a == bTrue>>> type(a - b) >>> type(a | b) >>> a.add(1)>>> b.add(1)Traceback (most recent call last): File "", line 1, in b.add(1)AttributeError: 'frozenset' object has no attribute 'add'
Функции
Именные функции, инструкция def Функция в python - объект, принимающий аргументы и возвращающий значение Обычно функция определяется с помощью инструкции def. Определим простейшую функцию: def add(x, y): return x + yИнструкция return говорит, что нужно вернуть значение В нашем случае функция возвращает сумму x и y. Теперь мы ее можем вызвать: >>> add(1, 10)11>>> add('abc', 'def')'abcdef'Функция может быть любой сложности и возвращать любые объекты (списки, кортежи, и даже функции!): >>> def newfunc(n): def myfunc(x): return x + n return myfunc >>> new = newfunc(100) # new - это функция>>> new(200)300>>>Функция может и не заканчиваться инструкцией return, при этом функция вернет значение None: >>> def func(): pass >>> print(func())None>>>Аргументы функции Функция может принимать произвольное количество аргументов или не принимать их вовсе. Также распространены функции с произвольным числом аргументов, функции с позиционными и именованными аргументами, обязательными и необязательными. >>> def func(a, b, c=2): # c - необязательный аргумент return a + b + c >>> func(1, 2) # a = 1, b = 2, c = 2 (по умолчанию)5>>> func(1, 2, 3) # a = 1, b = 2, c = 36>>> func(a=1, b=3) # a = 1, b = 3, c = 26>>> func(a=3, c=6) # a = 3, c = 6, b не определенTraceback (most recent call last): File "", line 1, in func(a=3, c=6)TypeError: func() takes at least 2 arguments (2 given)Функция также может принимать переменное количество позиционных аргументов, тогда перед именем ставится *: >>> def func(*args): return args >>> func(1, 2, 3, 'abc')(1, 2, 3, 'abc')>>> func()()>>> func(1)(1,)Как видно из примера, args - это кортеж из всех переданных аргументов функции, и с переменной можно работать также, как и с кортежем. Функция может принимать и произвольное число именованных аргументов, тогда перед именем ставится **: >>> def func(**kwargs): return kwargs >>> func(a=1, b=2, c=3){'a': 1, 'c': 3, 'b': 2}>>> func(){}>>> func(a='python'){'a': 'python'}>>>В переменной kwargs у нас хранится словарь, с которым мы, опять-таки, можем делать все, что нам заблагорассудится. Анонимные функции, инструкция lambda Анонимные функции могут содержать лишь одно выражение, но и выполняются они быстрее. Анонимные функции создаются с помощью инструкции lambda. Кроме этого, их не обязательно присваивать переменной, как делали мы инструкцией def func(): >>> func = lambda x, y: x + y>>> func(1, 2)3>>> func('a', 'b')'ab'>>> (lambda x, y: x + y)(1, 2)3>>> (lambda x, y: x + y)('a', 'b')'ab'>>>lambda функции, в отличие от обычной, не требуется инструкция return, а в остальном, ведет себя точно так же: >>> func = lambda *args: args>>> func(1, 2, 3, 4)(1, 2, 3, 4)>>>
Популярное: Как вы ведете себя при стрессе?: Вы можете самостоятельно управлять стрессом! Каждый из нас имеет право и возможность уменьшить его воздействие на нас... Личность ребенка как объект и субъект в образовательной технологии: В настоящее время в России идет становление новой системы образования, ориентированного на вхождение... Организация как механизм и форма жизни коллектива: Организация не сможет достичь поставленных целей без соответствующей внутренней... Как распознать напряжение: Говоря о мышечном напряжении, мы в первую очередь имеем в виду мускулы, прикрепленные к костям ... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (796)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |