Программирование на Python: список

Python – часто используемый язык программирования, простой, красивый, удобный. Работать с ним – одно удовольствие. Создавать объекты в Python (список, множество, строки, файлы) достаточно легко. Главное – понимать принцип программирования и алгоритмизации.

Понятие списка

Под списком понимается сгруппированное множество, заключенное в квадратные скобки и являющееся очень гибким типом данных. Элементы разделяются запятыми. Список можно сравнить с тем же массивом в Turbo Pascal или Delphi. С точки зрения физического расположения подобное сгруппированное множество является перечнем адресов на его элементы.

Примечательно, что в Python список может одновременно содержать различные типы данных: целые и вещественные числа, строки, файлы и т. д. В других языках программирования это недопустимо.

Создание списков. Как это сделать?

Самым популярным способом создать группированное множество является генератор. Таким методом определенное выражение применяется к каждому элементу списка. Принцип работы генератора можно сопоставить с циклом FOR.

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

Чтобы создать более сложный перечень элементов, не рекомендуется использовать генератор списков. Python предлагает организовать цикл FOR. Некоторые задачи позволяют задать список вручную, т. е. пользователь перечисляет в квадратных скобках через запятую необходимые ему данные.

Методы списков

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

  • List1.append (x) – метод, позволяющий добавить любой элемент в конец списка.
  • List1.extened (list2) – добавление сгруппированного множества list2 в конец list1. Если говорить проще, то extend позволяет объединить два списка.
  • List1.insert (i,x) – вставка любого элемента Х на позицию i. К примеру, если вставить новый объект в начале списка (а не в конце, как с методом append), то адреса всех компонентов обновятся с учетом введенной информации.
  • List1.remove (x) – удаление компонента Х. Если таковых Х несколько, то вырезается первый из списка. Если указанный компонент не встречается в списке, то программа выдает ошибку ValueError (x not in list).
  • List1.pop ([i]) – вырезание и возврат элемента на позиции i. Если пользователь не указывает индекс, то метод удаляет последний компонент. Квадратные скобки необходимы для того, чтобы указать на опциональность параметра, т. е. позицию можно пропустить.

  • List1.index (x, [start], [end]) – возвращение адреса ячейки первого элемента на промежутке от start до end. Эти параметры могут вводиться пользователем по приглашению программы. Еще нужно уточнить, что индексация начинается с 0. Т. е. адрес первого элемента равен 0, второго – 1 и т. д. К примеру, имеется список Х = [1.78487,5.575,7.364]. Тогда Х[0] = 1.78487, Х[1] = 5.575, Х[2] = 7.364.
  • List1.count (x) – возвращение количества компонента, значение которого равняется Х. Этот метод полезен в случае, когда одинаковых элементов в списке много, и их нужно посчитать.
  • List1.sort ([key = функция]) – организация сортировки списка. По умолчанию Python производит эту операцию по возрастанию. Однако можно написать функцию для сортировки и указать параметры, по которым будет происходить перестановка компонентов.
  • List1.reverse () – переворачивание списка, т. е. первый элемент становится последним, следующий занимает позицию второго с конца и т. д.
  • List1.copy () – копирование списка.

Что нужно знать при использовании методов? Они не перезаписывают список и не присваивают новое значение другой переменной.

Встроенные функции для работы со списками

Облегчают жизнь пользователю и встроенные функции:

  • Print – вывод на экран различной информации. В Python 2.7 после указанной функции не нужно брать в скобки данные, в Python 3 это делать обязательно. К примеру, в Python 2.7 функция будет выглядеть следующим образом: print «Количество мест», kolichestvo (где в кавычках указано предложение-пояснение, а через запятую – переменная). В Python 3 организация вывода заключается в следующем: print («Количество мест», kolichestvo). Отобразить на экране можно любые типы данных.
  • Len(list1) – в Python длина списка определяет количество элементов в списке.
  • Min – нахождение минимального компонента в списке, независимо от того, какие они по типу.

  • Max – вывод максимального элемента в сгруппированном множестве.
  • Sum – суммирование чисел в списке, независимо от того, вещественные они или целые. Если в сгруппированном множестве есть строковый тип данных, то программа выдаст ошибку TypeError: unsupported operand type(s) for +: 'int' and 'str'.
  • Help – вывод на экран раздела помощи по конкретному типу данных. Достаточно написать help (int) – для целых чисел, help (str) – для строкового типа данных, help (file) – для файлов, и программа выдаст справочную информацию, в которой можно найти методы, объекты и функции по необходимому разделу.
  • Type – показывает, к какому типу относится данная переменная. Оформляется следующим образом: >>> text_str = «Привет» >>> type (text_str) >>> <type 'str'>
  • Оператор in. Конечно, это не функция, но с помощью него можно проверить вхождение любого элемента в указанный список.

Сортировка списков

Данный язык программирования предоставляет пользователям массу преимуществ. К примеру, в Python сортировка списка организована просто. В отличие от того же Turbo Pascal и Delphi, в которых порой нужно прописывать десятки строк для выстраивания элементов массива в определенном порядке, в Python достаточно создать функцию в 3-4 строчки.

Кортежи

Как и строки, в Python список может быть неизменяемым объектом, иначе говоря immutable. В таком случае он называется кортежем, или tuple. Список требует больше памяти для выполнения задачи. Кортеж заключается в круглые скобки вместо квадратных. Допускается вывод tuple вовсе без скобок. Как было сказано, кортеж – неизменяемый объект. Нельзя конкретному адресу присвоить значение. Можно воспользоваться методом append, который добавит в конец кортежа нужные данные. Ниже показано, как правильно добавлять элементы в tuple.

Если использовать tuple как функцию, то строку он превращает в кортеж. К примеру: tuple ("string") → ("s","t","r","i","n","g").

Списки и файлы

Зачастую пользователи не знают, как в языке Python список файлов вывести на экран с использованием пути. Для этого необходимо подключить модуль OS и применить метод listdir. Следует обратить внимание, что в Python 3 списки (в версии 2.7 также) os.listdir (path) требуется вместо path ввести путь к каталогу в кавычках. Можно вывести количество всех объектов в папке.

Примеры задач с решением

1. Дан непустой список. Нужно вывести на экран индексы элементов списка, если их значения находятся в указанном промежутке. Минимальное и максимальное значения промежутка задаются пользователем. Индексы найденных элементов записываются в новый список. Дальше нужно вывести на экран его содержимое и длину.

Алгоритм:

  • Заполнение списка List1 рандомным образом (т. е. случайным).
  • Вывод на экран приглашения пользователю ввести минимальное и максимальное значение для промежутка.
  • Организация цикла, в котором происходит перебор всех элементов изначального списка, поиск индекса тех компонентов, которые подходят по заданному ограничению (min<X<max).
  • Добавление позиций в новый список List2.
  • Вывод на экран List2 и его длины.

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

Алгоритм:

  • Создать список.
  • Методом перебора убедиться, что данный элемент и последующий отличаются друг от друга.
  • Если появляется не уникальный компонент, выводится на экран надпись «Не уникальный».
  • Выход из программы.

Задачи для самоконтроля

  • Дополнение к задаче 1. Если найден элемент с нужным значением, он добавляется в новый список и удаляется из старого. Подсказка: использовать цикл while, функцию len ().
  • Дан непустой список. Необходимо определить, являются ли соседние числа одинаковыми по знаку (положительные, отрицательные). Если такие элементы списка присутствуют, нужно вывести их на экран, если отсутствуют – не выводить ничего, если пар несколько – вывести первую.
  • Создать список. Количество элементов задает пользователь. Нужно сгенерировать список рандомным образом и вывести на экран элементы, находящиеся на четных позициях, начиная с 0.

  • Создать список. Количество элементов задает пользователь. Нужно сгенерировать список рандомным образом и вывести на экран четные элементы, т. е. делящиеся на 2. Подсказка: использовать цикл FOR. Внимание: перебирать нужно числа, а не индексы.
  • Создать список. Количество элементов задает пользователь. Сгенерировать список рандомным образом. Вывести на экран числа, которые больше своего предшествующего соседа.

Комментарии