(8, 9, 10, 11, 12)
5.7.4. Преобразования между списками и кортежамиКортежи легко преобразуются в списки функцией list , которая получает в ар-гументе любую последовательность и строит новый список с элементами из ис-ходной последовательности. Аналогичным образом список можно преобразовать в кортеж функцией tuple , которая делает то же самое, но создает новый кортеж вместо нового списка:
>>> list((1, 2, 3, 4))
[1, 2, 3, 4]
>>> tuple([1, 2, 3, 4])
(1, 2, 3, 4)
Попутно отметим, что список предоставляет удобный способ разбиения строк на символы:
>>> list("Hello")
['H', 'e', 'l', 'l', 'o']
Этот прием работает, потому что метод list (и tuple ) может применяться к лю-бой последовательности Python, а строка является обычной последовательностью символов. (Строки более подробно рассматриваются в главе 6.)
БЫСТРАЯ.ПРОВЕРКА:.КОРТЕЖИ
Объясните, почему следующие операции недопустимы для кортежа x = (1, 2, 3, 4) : x.append(1)
x[1] = "hello"
del x[2]
Если у вас имеется кортеж x = (3, 1, 4, 2) , как можно отсортировать элементы x ?
5.8. Множества
Множество (set) в Python представляет собой неупорядоченную коллекцию объ-ектов, которая используется в том случае, если вас интересует прежде всего факт принадлежности объекта к коллекции и его уникальность. Как и ключи словарей (глава 7), элементы множества должны быть неизменяемыми и хешируемыми. Это означает, что целые числа, числа с плавающей точкой, строки и кортежи могут быть элементами множества, а списки, словари и сами множества — нет.
5.8.1. Операции с множествами
Кроме операций, применимых к коллекциям вообще (например, in , len и пере-бор для циклов for ), множества поддерживают ряд операций, специфических для множеств:
>>> x = set([1, 2, 3, 1, 3, 5])
>>> x
{1, 2, 3, 5}
>>> x.add(6)
>>> x
{1, 2, 3, 5, 6}
>>> x.remove(5)
>>> x
{1, 2, 3, 6}
>>> 1 in x
True
>>> 4 in x
False
>>> y = set([1, 7, 8, 9])
>>> x | y
{1, 2, 3, 6, 7, 8, 9}
>>> x & y
{1}
>>> x ^ y
{2, 3, 6, 7, 8, 9}
Множество можно создать вызовом set для последовательности — например, для списка . При преобразовании последовательности в множество дубликаты ис-ключаются . После создания множества функцией set вы можете использовать методы add и remove для изменения элементов множества. Ключевое слово in используется для проверки принадлежности объекта к множеству . Оператор | вычисляет объединение двух множеств, оператор & — их пересечение , а опера-тор ^ — их симметрическую разность (то есть элементы, входящие только в одно из двух множеств).
Эти примеры не содержат полной сводки операций с множествами, но и они дают представление о том, как работают множества. За дополнительной информацией обращайтесь к официальной документации Python.
5.8.2. Фиксированные множества
Поскольку множества не являются неизменяемыми и хешируемыми, они не могут быть элементами других множеств. Для решения этой проблемы в Python суще-ствует еще один тип множества frozenset , который ведет себя как множество, но не может изменяться после создания. Поскольку фиксированные множества об-ладают свойствами неизменяемости и хешируемости, они могут быть элементами других множеств:
>>> x = set([1, 2, 3, 1, 3, 5])
>>> z = frozenset(x)
>>> z
frozenset({1, 2, 3, 5})
>>> z.add(6)
Traceback (most recent call last):
File "", line 1, in
z.add(6)
AttributeError: 'frozenset' object has no attribute 'add' >>> x.add(z)
>>> x
{1, 2, 3, 5, frozenset({1, 2, 3, 5})}
БЫСТРАЯ.ПРОВЕРКА:.МНОЖЕСТВА
Если бы вам потребовалось построить множество на базе следующего списка, то сколько элементов будет содержать это множество: [1, 2, 5, 1, 0, 2, 3, 1, (1, 2, 3)] ?
ПРАКТИЧЕСКАЯ.РАБОТА.5:.АНАЛИЗ.СПИСКА В этой лабораторной работе ваша задача — прочитать из файла множество температурных данных (ежемесячные температурные максимумы аэропорта Хитроу с 1948 по 2016 год), а затем вычислить некоторые статистические харак-теристики: максимальной и минимальной температуры, средней температуры
и медианной температуры (то есть температуры, которая будет занимать цен-тральную позицию при сортировке температур).
Температурные данные находятся в файле lab_05.txt в каталоге исходного кода этой главы. Так как чтение файлов еще не рассматривалось, приведу готовый код чтения файла в список:
temperatures = []
with open('lab_05.txt') as infile:
for row in infile:
temperatures.append(int(row.strip())
Определите самую высокую и самую низкую температуру, среднюю и медиан-ную температуру. Вероятно, вам для этого понадобятся функции/методы min() , max() , sum() , len() и sort() .
Читать дальше