Python. Работа со списками. Продолжение.

Продолжаем урок Работа со списками. На прошлом уроке я писал о том, что добавить элемент в список можно командой append. Она добавляет в конец списка. Но что если надо добавить в середину? Тогда используем insert, он вставляет перед указанной позицией:

Программа выдаст:

[‘FFF’, 1, 2, 3, 10, ‘sdfds’, 44, 11]
[‘FFF’, ‘sss’, 1, 2, 3, 10, ‘sdfds’, 44, 11]
[‘FFF’, ‘sss’, 1, 3.14, 2, 3, 10, ‘sdfds’, 44, 11]

Еще можно обратиться к любому элементу списка, одновременно удаляя его (как бы извлекая элемент из списка):

Программа выдаст

3
[1, 2, 10, ‘sdfds’, 44, 11]
11
[1, 2, 10, ‘sdfds’, 44]

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

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

Программа выдаст:

0
4

Если элемент не найден, то произойдет прерывание выполнение выполнения программы с сообщением об ошибке, типа такого:

Traceback (most recent call last):
File «E:/Самообразование/Питон/Списки/ls15.py», line 4, in <module>
print(ls.index(10,1,2))
ValueError: 10 is not in list

Возникает вопрос, а как быть, если мы не знаем, есть ли у нас в списке заданный элемент? Не хотелось бы, чтобы при выполнения метода index у нас вылетело с ошибкой. Это можно проверить, например, командой count, которая считает количество элементов в списке:

Программа выдаст:

3
1
0

Еще списки можно сортировать:

Программа выдаст:

[10, 1, 2, 3, 10, 44, 11, 10, 33, 22]
[1, 2, 3, 10, 10, 10, 11, 22, 33, 44]

Но что, если надо отсортировать в обратном порядке? И это можно. Есть несколько способов. Например, можно применить метод reverse:

Программа выдаст:

[10, 1, 2, 3, 10, 44, 11, 10, 33, 22]
[44, 33, 22, 11, 10, 10, 10, 3, 2, 1]

Можно сделать еще вот:

Результат будет точно такой же.

Что будет, если мы попробуем отсортировать массив из строк?:

Программа отсортирует их по алфавиту:

[‘Иванов’, ‘Яблонев’, ‘Сидоров’, ‘Баракутов’, ‘Петров’, ‘Смирнова’]
[‘Баракутов’, ‘Иванов’, ‘Петров’, ‘Сидоров’, ‘Смирнова’, ‘Яблонев’]

А если мы хотим отсортировать, допустим, по длине строки? В этом случае мы можем написать свою функция для вычисления ключа сортировки и передать ее в метод sort:

Вот что выдаст наша программа:

[‘Иванов’, ‘Яблонев’, ‘Сидоров’, ‘Баракутов’, ‘Петров’, ‘Смирнова’]
[‘Иванов’, ‘Петров’, ‘Яблонев’, ‘Сидоров’, ‘Смирнова’, ‘Баракутов’]

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

Comments

So empty here ... leave a comment!

Добавить комментарий

Sidebar