Простой Python. Современный стиль программирования (Любанович) - страница 39

>>>> numbers = [2, 1, 4.0, 3]

>>>> numbers.sort()

>>>> numbers

>[1, 2, 3, 4.0]

По умолчанию список сортируется по возрастанию, но вы можете добавить аргумент reverse=True, чтобы отсортировать список по убыванию:

>>>> numbers = [2, 1, 4.0, 3]

>>>> numbers.sort(reverse=True)

>>>> numbers

>[4.0, 3, 2, 1]

Получение длины списка с помощью функции len()

Функция len() возвращает количество элементов списка:

>>>> marxes = ['Groucho', 'Chico', 'Harpo']

>>>> len(marxes)

>3

Присваивание с помощью оператора =, копирование с помощью функции copy()

Если вы присваиваете один список более чем одной переменной, изменение списка в одном месте повлечет за собой его изменение в остальных, как показано далее:

>>>> a = [1, 2, 3]

>>>> a

>[1, 2, 3]

>>>> b = a

>>>> b

>[1, 2, 3]

>>>> a[0] = 'surprise'

>>>> a

>['surprise', 2, 3]

Что же находится в переменной b? Ее значение все еще равно [1, 2, 3] или изменилось на ['surprise', 2, 3]? Проверим:

>>>> b

>['surprise', 2, 3]

Помните аналогию со стикерами в главе 2? b просто ссылается на тот же список объектов, что и а, поэтому, независимо от того, с помощью какого имени мы изменяем содержимое списка, изменение отразится на обеих переменных:

>>>> b

>['surprise', 2, 3]

>>>> b[0] = 'I hate surprises'

>>>> b

>['I hate surprises', 2, 3]

>>>> a

>['I hate surprises', 2, 3]

Вы можете скопировать значения в независимый новый список с помощью одного из следующих методов:

• функции copy();

• функции преобразования list();

• разбиения списка [: ].

Оригинальный список снова будет присвоен переменной а. Мы создадим b с помощью функции списка copy(), c — с помощью функции преобразования list(), а d — с помощью разбиения списка:

>>>> a = [1, 2, 3]

>>>> b = a.copy()

>>>> c = list(a)

>>>> d = a[: ]

Опять же b, c и d являются копиями a — это новые объекты, имеющие свои значения, не связанные с оригинальным списком объектов [1, 2, 3], на который ссылается a. Изменение a не повлияет на копии b, c и d:

>>>> a[0] = 'integer lists are boring'

>>>> a

>['integer lists are boring', 2, 3]

>>>> b

>[1, 2, 3]

>>>> c

>[1, 2, 3]

>>>> d

>[1, 2, 3]

Кортежи

Кортежи, как и списки, являются последовательностями произвольных элементов. В отличие от списков кортежи неизменяемы. Это означает, что вы не можете добавить, удалить или изменить элементы кортежа после того, как определите его. Поэтому кортеж аналогичен константному списку.

Создание кортежей с помощью оператора ()

Синтаксис создания кортежей несколько необычен, как мы увидим в следующих примерах.

Начнем с создания пустого кортежа с помощью оператора ():

>>>> empty_tuple = ()

>>>> empty_tuple

>()

Чтобы создать кортеж, содержащий один элемент или более, ставьте после каждого элемента запятую. Это вариант для кортежей с одним элементом: