Присваивание нескольких значений за раз
Присваивание нескольких значений за раз
Вот крутой программерский прием: в Python можно использовать кортежи, чтобы присваивать значение нескольким переменным сразу.
> > > v = ('a', 2, True)
> > > (x, y, z) = v ①
> > > x
'a'
> > > y
2
> > > z
True
①
| v — это кортеж из трех элементов, а (x, y, z) — кортеж из трёх переменных. Присвоение одного другому приводит к присвоению каждого значения из v каждой переменной в указанном порядке.
|
Это не единственный способ использования. Предположим, что вы хотите присвоить имена диапазону значений. Вы можете использовать встроенную функцию range() для быстрого присвоения сразу нескольких последовательных значений.
> > > (MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY) = range(7) ①
> > > MONDAY ②
0
> > > TUESDAY
1
> > > SUNDAY
6
①
| Встроенная функция range() создаёт последовательность целых чисел. (Строго говоря, функция range() возвращает итератор, а не список или кортеж, но вы узнаете разницу чуть позже. ) MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, и SUNDAY — определяемые переменные. (Этот пример заимствован из модуля calendar, небольшого забавного модуля, который отображает календари, примерно как программа cal из UNIX. В этом модуле определяются константы целого типа для дней недели. )
|
②
| Теперь каждой переменной присвоено конкретное значение: MONDAY — это 0, TUESDAY — 1, и так далее.
|
Вы также можете использовать присвоение значений нескольким переменным сразу, чтобы создавать функции, возвращающие несколько значений, для этого достаточно просто вернуть кортеж, содержащий эти значения. В том месте программы, где была вызвана функция, возвращаемое значение можно использовать как кортеж целиком, или присвоить значения нескольких отдельных переменных. Этот приём используется во многих стандартных библиотеках Python, включая и модуль os, о котором вы узнаете в следующей главе.
Множества
Множество — это «мешок», содержащий неупорядоченные уникальные значения. Одно множество может содержать значения любых типов. Если у вас есть два множества, вы можете совершать над ними любые стандартные операции, например, объединение, пересечение и разность.
Создание множества
Начнём с самого начала. Создать множество очень легко.
> > > a_set = {1} ①
> > > a_set
{1}
> > > type(a_set) ②
< class 'set'>
> > > a_set = {1, 2} ③
> > > a_set
{1, 2}
①
| Чтобы создать множество с одним значением, поместите его в фигурные скобки ({}).
|
②
| Множества, вообще-то, реализуются как классы, но пока не беспокойтесь об этом.
|
③
| Чтобы создать множество с несколькими значениями, отделите их друг от друга запятыми и поместите внутрь фигурных скобок.
|
Также вы можете создать множество из списка.
> > > a_list = ['a', 'b', 'mpilgrim', True, False, 42]
> > > a_set = set(a_list) ①
> > > a_set ②
{'a', False, 'b', True, 'mpilgrim', 42}
> > > a_list ③
['a', 'b', 'mpilgrim', True, False, 42]
①
| Чтобы создать множество из списка, воспользуйтесь функцией set(). (Педанты, которые знают как реализованы множества, отметят, что на самом деле это создание экземпляра класса, а не вызов функции. Я обещаю, вы узнаете в чём разница далее в этой книге. Сейчас просто знайте, что set() ведет себя как функция и возвращает множество. )
|
②
| Как я упоминал ранее, множество может содержать значения любых типов. И, как я упоминал ранее, множества неупорядочены. Это множество не помнит первоначальный порядок списка, из которого оно было создано. Если вы добавляете элементы в множество, оно не запоминает, в каком порядке они добавлялись.
|
③
| Исходный список не изменился.
|
У вас ещё нет значений? Нет проблем. Можно создать пустое множество.
> > > a_set = set() ①
> > > a_set ②
set()
> > > type(a_set) ③
< class 'set'>
> > > len(a_set) ④
0
> > > not_sure = {} ⑤
> > > type(not_sure)
< class 'dict'>
①
| Чтобы создать пустое множество, вызовите set() без аргументов.
|
②
| Напечатанное представление пустого множества выглядит немного странно. Вы, наверное, ожидали увидеть {}? Это означало бы пустой словарь, а не пустое множество. О словарях вы узнаете далее в этой главе.
|
③
| Несмотря на странное печатное представление, это действительно множество...
|
④
| ... и это множество не содержит ни одного элемента.
|
⑤
| В силу исторических причуд, пришедших из Python 2, нельзя создать пустое множество с помощью двух фигурных скобок. На самом деле, они создают пустой словарь, а не множество.
|
Изменение множества
Есть два способа добавить элементы в существующее множество: метод add() и метод update().
> > > a_set = {1, 2}
> > > a_set. add(4) ①
> > > a_set
{1, 2, 4}
> > > len(a_set) ②
3
> > > a_set. add(1) ③
> > > a_set
{1, 2, 4}
> > > len(a_set) ④
3
①
| Метод add() принимает один аргумент, который может быть любого типа, и добавляет данное значение в множество.
|
②
| Теперь множество содержит 3 элемента.
|
③
| Множества — мешки уникальных значений. Если попытаться добавить значение, которое уже присутствует в множестве, ничего не произойдет. Это не приведет в возникновению ошибки; просто нулевое действие.
|
④
| Это множество все ещё состоит из 3 элементов.
|
> > > a_set = {1, 2, 3}
> > > a_set
{1, 2, 3}
> > > a_set. update({2, 4, 6}) ①
> > > a_set ②
{1, 2, 3, 4, 6}
> > > a_set. update({3, 6, 9}, {1, 2, 3, 5, 8, 13}) ③
> > > a_set
{1, 2, 3, 4, 5, 6, 8, 9, 13}
> > > a_set. update([10, 20, 30]) ④
> > > a_set
{1, 2, 3, 4, 5, 6, 8, 9, 10, 13, 20, 30}
①
| Метод update() принимает один аргумент — множество, и добавляет все его элементы к исходному множеству. Так, как если бы вы вызывали метод add() и по очереди передавали ему все элементы множества.
|
②
| Повторяющиеся значения игнорируются, поскольку множество не может содержать дубликаты.
|
③
| Вообще-то, вы можете вызвать метод update() с любым количеством параметров. Когда он вызывается с двумя множествами, метод update() добавляет все элементы обоих множеств в исходное множество (пропуская повторяющиеся).
|
④
| Метод update() может принимать объекты различных типов, включая списки. Когда ему передается список, он добавляет все его элементы в исходное множество.
|
Воспользуйтесь поиском по сайту: