Python вывести список кортежей

Python кортеж

Чтобы усовершенствовать программный код, добавить в него новые важные функции используются разнообразные методы. К ним относится: создание списков, кортежей или словарей. В данной статье рассмотрим, когда используются, чем они отличаются, как создать и как работать с кортежами в Python 3.

Что такое кортеж

Кортеж – это неизменная структура заданных заранее значений. Он очень похож на список, но последний подвержен изменениям. Так, если нужно исправить какой-то элемент списка, можно сделать это, напрямую указав:

Если же записать подобный код, но попытаться применить его к кортежу, ничего не выйдет, а на экране появится надпись об ошибке. Считается, что это важно, поскольку таким образом данные невозможно будет изменить как случайно, так и намеренно. Также в python добавление элемента в кортеж невозможно. Правда можно привести его в список, добавить элемент. После этого полученный список преобразовать обратно.

Выгодное преимущество кортежа состоит также в том, что он имеет меньший размер, что проверяется применением команды sizeof. Она показывает, сколько занимает объект в байтах:

Из этого кода видно, что кортеж (в круглых скобках) занимает 36 байтов, а список (в квадратных скобках) – 44 байта.

Создание

Кортеж определяется точно так же, как и список, однако перечисление происходит в круглых, а не квадратных скобках. Элементы будут стоять в определенном порядке, а их нумерация всегда начинается с нуля. А точнее для непустого кортежа первым элементом будет являться ноль. Отрицательный индекс позволит отсчитывать все с конца (с правой стороны).

Читайте также:  Чем можно отбелить полинявшие белые вещи

Приведем пример создания в Python обычного кортежа:

Можно преобразовать список в кортеж следующим образом:

Рассмотрим кортеж с отрицательным индексом:

То есть на экране отобразился первый не с начала, а с конца элемент.

Чтобы создать кортеж с одним элементом, нужно сделать такую запись:

Нужно обратить особое внимание на то, что даже если элемент один, после него все равно должна стоять запятая.

Иногда для создания кортежей используются генераторы. Обычно они служат, чтобы компактно и удобно создать необходимую коллекцию элементов. Приведем пример:

Выше представлен генератор кортежа. То есть мы создали генератор. После этого преобразовали его к кортежу с помощью ключевого слова tuple.

Подробнее о срезах описано ниже в пункте «Обращение к элементу».

Использование генераторов кортежей аналогично генераторам списка.

Обращение к элементу

У каждого элемента есть свой индекс. То есть, в Python для обращения к элементу кортежа, нужно просто указать его индекс. Напомним, что счет начинается с нуля. Посмотрим на код:

Из кортежа можно извлечь как элемент, так и срез. В этом случае мы получим кортеж, состоящий из элементов, расположенных в промежутке среза. Следует уточнить, что при указании среза используются не номера элементов, а номера промежутков между ними. Перед первым элементом находится промежуток с индексом 0. Рассмотрим пример:

Методы

Кортежи в python имеют только два метода: index() и count(). Первый применяется, чтобы узнать, какой индекс у определенного элемента. Например:

Элементов «33» в кортеже несколько, но на экран будет выведен индекс первого из них.

Метод count используется, если нужно узнать, сколько определенных элементов имеется в кортеже.

На экране перед пользователем появится именно число 3, потому что в кортеже искомое число 33 повторяется 3 раза.

Помните, что в кортежах нет методов добавления и удаления элементов.

Именованные кортежи

Данный класс не получил широкого применения среди программистов, хотя он и является достаточно важным и полезным. Именованные кортежи в python (или namedtuple) в каком-то смысле являются расширениями для обычных. Так, огромной проблемой считается то, что получать данные из кортежа можно только при помощи числовых индексов. А что делать, если хочется для наглядности кода обращаться к элементам, используя строковое наименование. Такое обращение значительно улучшит читаемость кода. Для этого на помощь приходит namedtuple.

Для того, чтобы использовать namedtuple, необходимо подключить библиотеку collections. Это делается с помощью import collecions * . В этом случае обращаться к namedtuple будет необходимо следующим образом: collections.namedtuple( [параметры] ) . Другой вариант подключения библиотеки приведен в примере ниже.

Каждый элемент, сохраненный в именованном кортеже, доступен через определенный идентификатор. Посмотрим на примере кода:

Наименования полей были перечислены через пробел. Вместо этой строки можно было передать список со строками. В конструкторе namedtuple разобьет полученную строку с помощью split. В качестве примера было приведено обращение к элементу cost. К остальным обращение аналогично: rose.color , rose.comment .

Таким образом, именованный кортеж делает вид программного кода более читаемым. Так, в вышеуказанном коде можно увидеть наименования color, cost и comment. И при всем при этом, сохраняется возможность обращения к элементам по индексу, например дописав к предыдущему коду:

Список кортежей

Иногда бывают задачи, в которых нужно хранить таблицы с данными, которые называются матрицами (или двумерными массивами). Для работы с массивами используется библиотека array. К сожалению, не получится с ее помощью сделать массив кортежей. Потому что элементом массива не может быть кортеж.

Из этой ситуации есть выход — создание в Python списка кортежей. Вариант объявления такого списка представлен ниже:

Cортировка

Иногда нужно отсортировать имеющиеся элементы списка. Благодаря встроенной функции sorted, все это делается достаточно легко:

Видно, что произошла сортировка кортежа Python по алфавиту. Стандартную сортировку можно провести и по числовым элементом. Посмотрим на пример:

Заметим, что произошла сортировка по возрастанию.

В список

Кортеж можно переделать в список:

Таким образом, кортеж был преобразован в список Python, который можно изменить. Теперь рассмотрим обратное действие — преобразование списка в кортеж:

В словарь

Словарь – это еще одна структура используемая в Python. Он, как и список, является изменяемым, но при этом неупорядоченным. Это значит, что обратиться к определенному элементу посредством указания индекса – не получится. Чтобы лучше понять, можно провести аналогию с обычным англо-русским словарем. В нем для каждого слова есть перевод: house –дом, flat – квартира, window – окно. Если перенести такую структуру в программный код, то получится такая запись, оформляемая фигурными скобками:

Последовательность пар при выводе на экран не определяется никаким правилом, отображаются они в произвольном порядке.

Для того, чтобы в Python преобразовать кортеж в словарь, необходимо использовать приведение типов с помощью dict.

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

В строку

Чтобы вывести в python кортеж в одну строку, используется функция join. Посмотрим на примере:

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

Чем же кортежи удобнее? Работа с ними проходит быстрее, чем, например, со списками. Если программисту нужно определить постоянный набор значений, чтобы затем их перебирать, то лучше будет сделать это с его помощью. Плюс – это экономия оперативной памяти, так как они занимают меньше места, чем списки.

Источник

Кортежи и операции с ними

На этом занятии мы познакомимся с еще одной коллекцией данных в Python – словарем. В отличие от списков

Кортеж – это упорядоченная неизменяемая коллекция произвольных данных.

Для задания кортежа достаточно перечислить значения через запятую:

или же, это эквивалентно такой записи:

Чтобы присвоить только одно значение кортежу, используется такой синтаксис:

то есть, последняя запятая указывает, что 1 следует воспринимать как первый элемент кортежа. Если записать просто 1, то оно будет восприниматься как обычное число.

Если записать переменные через запятую, то им можно присвоить значения из кортежа:

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

Для определения длины кортежа (числа его элементов), используется уже знакомая вам функция

Далее, доступ к элементам кортежа осуществляется также как и к элементам списков:

О срезах мы подробно говорили, когда рассматривали списки, поэтому не вижу смысла дублировать здесь эту информацию. Обратите лишь внимание на то, что вот такая операция

не создает копию кортежа – это будут ссылки на один и тот же кортеж:

увидим одно и то же значение id.

Если кортежи так похожи на списки, то в чем их преимущество перед ними? Другими словами: в каких случаях следует использовать кортеж вместо списка? Во-первых, кортеж – это неизменяемый тип, то есть, мы в отличие от списков, не можем выполнять такие операции:

это приведет к ошибке. Значит, кортеж можно использовать, когда необходимо «запретить» программисту менять значения элементов списка. Во-вторых, кортежи можно использовать в качестве ключей у словарей, например, так:

В-третьих, кортеж занимает меньше памяти, чем такой же список, например:

Как видите, размер кортежа меньше, чем списка. Здесь использован метод __sizeof__, который возвращает размер данных в байтах.

И, наконец, в-четвертых, операции с кортежами выполняются быстрее, чем со списками, например, перебор элементов или доступ к отдельному элементу.

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

Чтобы создать пустой кортеж можно использовать такие конструкции:

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

или для добавления в начало кортежа:

Также можно добавить вложенный кортеж:

или делать дубли в кортеже:

Все эти операции вполне допустимы.

Далее, функция tuple позволяет создавать кортежи на основе любых упорядоченных списков:

И обратно, из кортежа можно сформировать список:

Также кортежи могут хранить самые разные данные:

Причем, смотрите, если обратиться, например, к списку:

то сам по себе список – это изменяемый тип, следовательно, его значение даже в кортеже мы можем спокойно менять:

То есть, неизменяемость кортежа относится к его структуре элементов и переменным

которые ссылаются на конкретные объекты. Но, если объекты могут изменяться, то это никто не запрещает делать.

Так как сам кортеж – неизменяемый объект, то удалить отдельные его элементы невозможно:

но можно удалить его целиком:

после этого кортеж a перестанет существовать.

Методы кортежа

У кортежа имеется два таких метода:

который возвращает число найденных элементов с указанным значением. Если элемент не найден:

то возвращается число 0.

возвращает индекс первого найденного элемента с указанным значением. Второй необязательный параметр

позволяет задавать индекс начала поиска элемента. В данном случае поиск будет начинаться с третьего индекса. А последний третий аргумент:

определяет индекс, до которого идет поиск (не включая его). Если же записать вот так:

то возникнет ошибка, т.к. в поиск будет включен только 3-й индекс и там нет значения 2.

Задания для самопроверки

p = («+792345678», «+792345478», «+792355678», «+592345678», «+392345678», «+7923456558»)

Нужно вывести все номера, начинающиеся с «+7».

2. Имеется набор оценок в виде строки:

«Оценки: 5, 4, 3, 4, 2, 4, 5, 4»

Необходимо создать кортеж, в котором находились бы только оценки в виде целых чисел:

(5, 4, 3, 4, 2, 4, 5, 4)

3. Вывести значения кортежа:

1 – 2 – 3
4 – 5 – 6
7 – 8 – 9

Видео по теме

#1. Первое знакомство с Python Установка на компьютер

#2. Варианты исполнения команд. Переходим в PyCharm

#3. Переменные, оператор присваивания, функции type и id

#4. Числовые типы, арифметические операции

#5. Математические функции и работа с модулем math

#6. Функции print() и input(). Преобразование строк в числа int() и float()

#7. Логический тип bool. Операторы сравнения и операторы and, or, not

#8. Введение в строки. Базовые операции над строками

#9. Знакомство с индексами и срезами строк

#10. Основные методы строк

#11. Спецсимволы, экранирование символов, row-строки

#12. Форматирование строк: метод format и F-строки

#13. Списки — операторы и функции работы с ними

#14. Срезы списков и сравнение списков

#15. Основные методы списков

#16. Вложенные списки, многомерные списки

#17. Условный оператор if. Конструкция if-else

#18. Вложенные условия и множественный выбор. Конструкция if-elif-else

#19. Тернарный условный оператор. Вложенное тернарное условие

#20. Оператор цикла while

#21. Операторы циклов break, continue и else

#22. Оператор цикла for. Функция range()

#23. Примеры работы оператора цикла for. Функция enumerate()

#24. Итератор и итерируемые объекты. Функции iter() и next()

#25. Вложенные циклы. Примеры задач с вложенными циклами

#26. Треугольник Паскаля как пример работы вложенных циклов

#27. Генераторы списков (List comprehensions)

#28. Вложенные генераторы списков

#29. Введение в словари (dict). Базовые операции над словарями

#30. Методы словаря, перебор элементов словаря в цикле

#31. Кортежи (tuple) и их методы

#32. Множества (set) и их методы

#33. Операции над множествами, сравнение множеств

#34. Генераторы множеств и генераторы словарей

#35. Функции: первое знакомство, определение def и их вызов

#36. Оператор return в функциях. Функциональное программирование

#37. Алгоритм Евклида для нахождения НОД

#38. Именованные аргументы. Фактические и формальные параметры

#39. Функции с произвольным числом параметров *args и **kwargs

#40. Операторы * и ** для упаковки и распаковки коллекций

#41. Рекурсивные функции

#42. Анонимные (lambda) функции

#43. Области видимости переменных. Ключевые слова global и nonlocal

#44. Замыкания в Python

#45. Введение в декораторы функций

#46. Декораторы с параметрами. Сохранение свойств декорируемых функций

#47. Импорт стандартных модулей. Команды import и from

#48. Импорт собственных модулей

#49. Установка сторонних модулей (pip install). Пакетная установка

#50. Пакеты (package) в Python. Вложенные пакеты

#51. Функция open. Чтение данных из файла

#52. Исключение FileNotFoundError и менеджер контекста (with) для файлов

#53. Запись данных в файл в текстовом и бинарном режимах

#54. Выражения генераторы

#55. Функция-генератор. Оператор yield

#56. Функция map. Примеры ее использования

#57. Функция filter для отбора значений итерируемых объектов

#58. Функция zip. Примеры использования

#59. Сортировка с помощью метода sort и функции sorted

#60. Аргумент key для сортировки коллекций по ключу

#61. Функции isinstance и type для проверки типов данных

#62. Функции all и any. Примеры их использования

#63. Расширенное представление чисел. Системы счисления

#64. Битовые операции И, ИЛИ, НЕ, XOR. Сдвиговые операторы

#65. Модуль random стандартной библиотеки

© 2021 Частичное или полное копирование информации с данного сайта для распространения на других ресурсах, в том числе и бумажных, строго запрещено. Все тексты и изображения являются собственностью сайта

Источник

Оцените статью